无法遍历特殊JSON结构,求转换为标准JSON并访问字段的方法
解决方法
你的问题核心是嵌套的JSON字符串未被解析,加上原数据里的转义引号干扰,导致无法直接访问内层n和i字段。以下是具体修复步骤和代码:
步骤说明
- 先还原转义引号(将
"替换为"); - 把每个对象中
p对应的字符串值解析为JSON对象; - 替换原字段值,得到标准JSON结构。
代码实现
import json # 模拟你的原始数据 raw_data = [{'"p"': '{"n":"s","i":"1"}'}, {'"p"': '{"n":"test","i":"2"}'}] standard_data = [] for item in raw_data: # 遍历每个字典的键值对(每个字典仅含一个键) for raw_key, raw_value in item.items(): # 还原转义引号,得到标准键名 key = raw_key.replace('"', '"') # 还原值里的转义引号,再解析为JSON对象 parsed_value = json.loads(raw_value.replace('"', '"')) # 构建标准格式字典并加入列表 standard_data.append({key: parsed_value}) # 现在可直接访问标准JSON字段 for obj in standard_data: print(obj["p"]["n"], obj["p"]["i"])
你的代码报错原因
循环里的j是字典的键(比如"p"),并非键值对。for k,v in j会把键的每个字符当作迭代元素,单个字符无法拆成k和v两个值,因此触发ValueError。
最终效果
运行代码后,standard_data即为你需要的标准格式:
[{"p": {"n":"s","i":"1"}}, {"p": {"n":"test","i":"2"}}]
内容的提问来源于stack exchange,提问作者user18148705
相关产品推荐
相关产品推荐

