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

如何实现JSON深度解析?嵌套details字段二次解析方法

解决嵌套JSON字段的解析问题

你的问题出在details字段本身是一个被转义的JSON字符串,因此需要二次解析才能将其转为字典。另外注意原字符串存在一处语法错误,会导致解析失败,需要先修正。

修正步骤与代码示例

  1. 先修正原字符串中payload部分末尾多余的逗号("username":["test"],里的逗号不符合JSON规范)
  2. 第一次解析外层JSON结构
  3. 第二次单独解析details字段的内容
import json

# 修正原字符串中的无效逗号
fixed_raw_data = b'{"campaign_id":6,"email":"test@test.ru","time":"2024-01-26T06:05:59.852155Z","message":"Submitted Data","details":"{\\\"payload\\\":{\\\"__RequestVerificationToken\\\":[\\\"CfDJ8EfyW-fedawawdawdwadwadwawadawd-6xqg_ZIdEJBpbAHkDQdNM\\\"],\\\"__original_url\\\":[\\\"https://test-test-test.ru/\\\"],\\\"password\\\":[\\\"test\\\"],\\\"qwe\\\":[\\\"Gg4gTWg\\\"],\\\"username\\\":[\\\"test\\\"]},\\\"browser\\\":{\\\"address\\\":\\\"1.1.1.1\\\",\\\"user-agent\\\":\\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0\\\"}}"}'

# 解析外层JSON
parsed_data = json.loads(fixed_raw_data)
# 解析details字段的嵌套JSON
parsed_data['details'] = json.loads(parsed_data['details'])

# 验证结果
print(type(parsed_data['details']))  # 输出 <class 'dict'>
print(parsed_data['details']['browser']['address'])  # 输出 1.1.1.1

关键说明

  • 原字符串里"username":["test"],末尾的逗号是非法的JSON语法,必须移除,否则第二次解析会抛出json.JSONDecodeError
  • 两次调用json.loads()是核心逻辑:第一次处理外层的JSON结构,第二次把details字段中的转义JSON字符串转为字典

内容的提问来源于stack exchange,提问作者Салават Абдудин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 18:00:04