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

Python解析方括号开头JSON文件仅返回[字符的解决方法

问题根因

你在保存JSON文件时做了两次序列化操作,导致文件里存储的是JSON字符串的序列化结果,而不是原始的数组结构:

  1. 第一次:json_dump = json.dumps(json_obj) 已经把Python数组转成了JSON格式的字符串
  2. 第二次:json.dump(json_dump, outfile) 又把上面得到的JSON字符串再次做了序列化,最终写入文件的是带转义符的字符串内容,不是正常的JSON数组

修复方案

有两种修改方式,二选一即可:

方案1:直接序列化Python对象到文件(推荐)

删掉json_dump = json.dumps(json_obj)这一行,直接把json_obj传入json.dump:

json_obj = []
for i in range(len(dictionary)):
    dataset, test, dir = retrieve_data()
    tp, fp, tn, fn = calculate_score()
    json_obj.append({
        'dataset': dataset,
        'test': test,
        'results': {'TP': tp, 'FP': fp, 'FN': fn, 'TN': tn},
        'dir': dir 
    })
# 删掉多余的dumps步骤,直接dump原生的Python数组对象
with open(save_folder, 'w') as outfile:
        json.dump(json_obj, outfile, indent=2) # 加indent参数可以让JSON格式化输出,可读性更高

方案2:把序列化后的字符串直接写入文件,不用再次调用json.dump

如果需要保留json_dump字符串做其他用途,可以把json.dump改成普通的文件写入:

json_dump = json.dumps(json_obj, indent=2)
with open(save_folder, 'w') as outfile:
        outfile.write(json_dump)

读取验证

修改保存逻辑后,你原来的读取代码就可以正常解析了:

with open(dir, 'r+') as f:
   data = json.load(f)
print(data[0]) # 此时会输出数组的第一个对象,而不是字符串的第一个字符'['

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:54:05