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

如何在Python中正确动态生成合法的JSON字符串?

解决Python动态生成JSON数组时的转义问题

问题根源分析

你的初始代码之所以会输出带转义的长字符串,核心问题是手动拼接JSON字符串后又用json.dumps()处理——这相当于把拼接好的字符串当成了一个单一的JSON值,json.dumps()会自动转义字符串里的引号,最终导致输出不符合预期的数组结构。

看你的初始代码片段:

for x in testcase_ids:
    result_details = '{"case_id": ' + str(x) + ',"status_id": 1,"version":"1.0","comment":"Test"}'
    results.append(result_details)
result_list = ','.join(results)
json_string = json.dumps(result_list)
data = {"results": [ json_string ]}
print(json.dumps(data, indent=4, sort_keys=True))

这里result_list是一个类似"{"case_id":76565,...},{"case_id":76601,...}"的字符串,json.dumps(result_list)会把它转成带转义的JSON字符串,再放到data["results"]数组里,自然就不是你想要的对象数组了。

正确的解决方案:直接构造Python数据结构

处理JSON的最佳实践是先构造Python原生的字典和列表,最后一次性用json.dumps()序列化,json模块会帮你处理所有格式和转义问题,完全不需要手动拼接字符串。

简洁版实现

import json

testcase_ids = [76565, 76601, 76668, 23467]

# 用列表推导式快速生成字典列表
results = [
    {"case_id": x, "status_id": 1, "version": "1.0", "comment": "Test"}
    for x in testcase_ids
]

# 构造最终数据结构并序列化输出
data = {"results": results}
print(json.dumps(data, indent=4, sort_keys=True))

你的修复代码优化

你后来的修复思路是对的(构造字典列表),但里面多了一步没必要的json.dumps()再json.loads(),可以简化成这样:

import json

results = []
for x in mrc_testcase_ids:
    result_details = {"case_id": str(x),"status_id": 1,"version":"1.0","comment":"Test"}
    results.append(result_details)

# 直接用Python数据结构序列化,无需额外转存
print(json.dumps({"results": results}, indent=4, sort_keys=True))

预期输出

运行上述代码后,会得到你想要的格式化JSON结构:

{
    "results": [
        {
            "case_id": 76565,
            "comment": "Test",
            "status_id": 1,
            "version": "1.0"
        },
        {
            "case_id": 76601,
            "comment": "Test",
            "status_id": 1,
            "version": "1.0"
        },
        {
            "case_id": 76668,
            "comment": "Test",
            "status_id": 1,
            "version": "1.0"
        },
        {
            "case_id": 23467,
            "comment": "Test",
            "status_id": 1,
            "version": "1.0"
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:53:46