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

如何将非标准JSON响应字符串转为JSON对象数组并保存为CSV?

解决响应字符串转JSON数组并写入CSV的问题

问题分析

你的代码存在两个核心问题:

  • 错误嵌套使用json.dumps()和json.loads(),这会把原字符串转义后再解析,最终得到的还是原字符串,完全没完成JSON解析工作。
  • 响应里的"null"是字符串值,而非JSON标准的null类型,若需要将其转为JSON的null,得先做字符串替换处理。

解决方案

步骤1:正确解析响应为JSON数组

根据需求选择两种处理方式:

import json

response_object = """[{
"a" : "1",
"b" : "2",
"c" : "null"
}, {
"d" : "3",
"e" : "4",
"f" : "null"
}] 
"""

# 方案1:直接解析,保留"null"作为字符串值
json_array = json.loads(response_object)
# 输出:[{'a': '1', 'b': '2', 'c': 'null'}, {'d': '3', 'e': '4', 'f': 'null'}]

# 方案2:把"null"字符串转为JSON标准的null(即Python的None)
processed_response = response_object.replace('"null"', 'null')
json_array = json.loads(processed_response)
# 输出:[{'a': '1', 'b': '2', 'c': None}, {'d': '3', 'e': '4', 'f': None}]

步骤2:将JSON数组写入CSV

提取所有对象的键作为表头,再按顺序写入每行数据:

import csv

# 基于已解析的json_array操作
# 收集所有唯一键作为CSV表头
all_keys = set()
for item in json_array:
    all_keys.update(item.keys())
headers = list(all_keys)

# 写入CSV文件
with open('output.csv', 'w', newline='', encoding='utf-8') as f:
    writer = csv.writer(f)
    writer.writerow(headers)
    for item in json_array:
        # 按表头顺序填充值,不存在的键填空字符串
        row = [item.get(key, '') for key in headers]
        writer.writerow(row)

补充说明

原响应字符串本身是有效的JSON格式,无需修改结构,直接调用json.loads()就能解析为数组。如果后续遇到其他非标准JSON问题(比如单引号、未转义的特殊字符),可先做对应字符串替换再解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:55:18