You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:01:27