读取嵌套JSON文件到Python字典时出现JSONDecodeError报错求助
JSONDecodeError 解决:属性名需双引号的问题
问题场景
读取包含嵌套字典的JSON文件时抛出错误:
JSONDecodeError: Expecting property name enclosed in double quotes: line 6 column 17 (char 301)
涉及的JSON文件内容:
{ "MLJobId": "Model", "training_config" : { "AlgorithmSpecification": { "TrainingImage": "683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-xgboost:1.3-1", "TrainingInputMode": "File" } } }
读取代码:
import json with open ('param.json','r',encoding='utf-8') as f: data = json.load(f)
注:使用简单JSON可正常读取,曾误以为是嵌套值处理问题。
错误原因
这不是嵌套字典的问题,而是JSON语法严格要求所有属性名必须用双引号包裹,同时要保证括号完全成对。错误提示指向的位置大概率存在属性名未用双引号、括号不匹配,或存在全角字符/不可见特殊字符的情况。
修复方案
检查并修正JSON语法:
- 确保所有属性名(如
MLJobId、training_config)都用双引号包裹,禁止使用单引号或无引号 - 核对括号配对:每个
{必须对应一个},避免多写或漏写 - 清除全角空格、特殊不可见字符等干扰内容
- 确保所有属性名(如
修复后的规范JSON示例:
{ "MLJobId": "Model", "training_config": { "AlgorithmSpecification": { "TrainingImage": "683313688378.dkr.ecr.us-east-1.amazonaws.com/sagemaker-xgboost:1.3-1", "TrainingInputMode": "File" } } }
验证
使用原读取代码加载修复后的JSON文件,即可正常解析嵌套字典结构。
内容的提问来源于stack exchange,提问作者dewdrops
相关产品推荐
相关产品推荐

