Python中json.loads解析JSON报错的原因及解决方向咨询
JSON解析错误原因与修复方案
错误核心原因
你的JSON字符串存在两个致命问题:
- 错误地将数组(
[...])用双引号包裹成了字符串,但数组本身是JSON的合法值类型,不需要额外加引号。 - 包裹数组的双引号与数组内部键值对的双引号冲突,解析器遇到
"[{"时,会认为第一个"已经结束alarm_flood的字符串值,后续的[属于非法字符,触发Expecting ',' delimiter错误。 - 加
r前缀仅让Python不转义字符串内部的反斜杠,你的问题并非转义符导致,因此无效。
修复步骤
直接去掉数组外层的双引号,确保alarm_flood和flood_status的值是数组而非字符串。
修复后的Python字符串示例
用三引号包裹(更易读):
string = '''{ "alarm_flood": [ {"Date_Time": "01-12-2009 12:18:42", "flood_status": "1", "FloodIndex": "0", "Plant_Area": "AREA 1"}, {"Date_Time": "01-12-2009 12:18:42", "flood_status": "0", "FloodIndex": "0", "Plant_Area": "AREA 1"} ], "flood_status": [ {"Date_Time": "01-12-2009 12:18:42", "flood_status": "1", "FloodIndex": "0", "Plant_Area": "AREA 1"}, {"Date_Time": "01-12-2009 12:18:42", "flood_status": "0", "FloodIndex": "0", "Plant_Area": "AREA 1"} ] }'''
或者单行格式:
string = '{"alarm_flood": [{"Date_Time": "01-12-2009 12:18:42", "flood_status": "1", "FloodIndex": "0", "Plant_Area": "AREA 1"}, {"Date_Time": "01-12-2009 12:18:42", "flood_status": "0", "FloodIndex": "0", "Plant_Area": "AREA 1"}], "flood_status": [{"Date_Time": "01-12-2009 12:18:42", "flood_status": "1", "FloodIndex": "0", "Plant_Area": "AREA 1"}, {"Date_Time": "01-12-2009 12:18:42", "flood_status": "0", "FloodIndex": "0", "Plant_Area": "AREA 1"}]}'
验证修复
运行以下代码即可正常解析:
import json data = json.loads(string) print(data)
内容的提问来源于stack exchange,提问作者Rui Nian
相关产品推荐
相关产品推荐

