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

如何为类JSON结构字符串的数组元素添加双引号以实现合法JSON转换

类JSON字符串数组缺引号的Python修复方案

核心通过正则表达式实现无损替换,不会修改已被双引号包裹的键名、固定字段值,仅处理数组内的未包裹元素和空值:

import re
import json

# 原始待转换字符串
to_json = '''
{
    "Element1": {
        "ID": "ID321",
        "Data a": [elm1, elem2, 1, 1, , 2, , 3, 354, , NCA, x]
    },
    "Element2": {
        "ID": "ID421",
        "Data a": [elm1, elem2, 1, 1, , 2, , 3, 354, , NCA, x],
        "Data b": [elm1, elem2, 3, 4, , 5, , 3, 354, , CAA, x, y, z, , ]
    },
    "Element3": {
        "ID": "ID512",
        "Data a": [elm1, elem2, elm3, 2, 2, , 2, , 3, 54, , ABC, x, y, z, w, , ]
    }
}
'''

# 第一步:处理数组中的空值,将空位置替换为空格字符串
fixed_str = re.sub(r',\s*,', ', " ",', to_json)
fixed_str = re.sub(r'\[,\s*', '[" ", ', fixed_str)
fixed_str = re.sub(r'\s*,\s*]', ', " "]', fixed_str)

# 第二步:为数组中所有未被双引号包裹的元素添加双引号
fixed_str = re.sub(r'(?<=[\[,]\s*)([^,"\]]+?)(?=\s*[,|\]])', r'"\1"', fixed_str)

# 直接转换为JSON对象
json_data = json.loads(fixed_str)

# 测试输出验证
print(json_data["Element2"]["Data b"])
  • 正则逻辑自动过滤已用双引号包裹的内容,不会修改原有键名、ID字段等合法JSON部分
  • 空值默认替换为" ",如果需要替换为null等其他值,修改第一步替换的" "内容即可
  • 处理后的字符串可直接通过json.loads正常解析,无需额外适配

内容的提问来源于stack exchange,提问作者BadRobot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:45:01