如何在Python中解码含嵌套字典字符串的JSON格式数据?
解决方法
问题出在原字符串经Python解析后,实际传递给json.loads的是格式无效的JSON——abc字段的值里的双引号未转义,导致JSON结构断裂。可通过以下步骤修复:
- 清理输入字符串,去除前后换行、空格等空白字符;
- 修正
abc值内的双引号,转义为JSON可识别的格式; - 先解析外层JSON,再解析
abc字段对应的内层JSON字符串。
具体代码实现
import json import re t1 = """ {"abc": "{\"version\": \"1\"}"} """ # 清理字符串,去除前后空白 clean_t1 = t1.strip() # 修复值内部的双引号转义问题:匹配abc值内容,将其中的"替换为\" fixed_t1 = re.sub(r'(?<="abc": ")(.*?)(?=")', lambda m: m.group(0).replace('"', '\\"'), clean_t1) # 解析外层JSON outer_dict = json.loads(fixed_t1) # 解析内层JSON字符串 inner_dict = json.loads(outer_dict["abc"]) print(outer_dict) # 输出: {'abc': '{"version": "1"}'} print(inner_dict) # 输出: {'version': '1'}
针对固定结构的简化写法
如果输入结构固定,也可以直接用字符串替换快速修复:
import json t1 = """ {"abc": "{\"version\": \"1\"}"} """ clean_t1 = t1.strip() # 替换值内的引号为转义格式 fixed_t1 = clean_t1.replace('"{', '"{\\"').replace('}"', '\\"}"') outer_dict = json.loads(fixed_t1) inner_dict = json.loads(outer_dict["abc"]) print(inner_dict)
内容的提问来源于stack exchange,提问作者spt025
相关产品推荐
相关产品推荐

