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

Python读取JSON文件内数组得到字符串而非列表该如何解决

问题原因

你当前的prueba.json文件存储的是两次JSON序列化后的结果:第一次是把Python列表转为JSON数组字符串,第二次又把这个字符串作为值再次做了JSON序列化写入文件,因此文件实际存储的是字符串类型的JSON值,而非JSON数组。

你直接给变量赋值的场景下,Python会自动处理字符串字面量里的转义符,实际f变量拿到的就是无外层引号、无转义符的数组JSON串,因此单次json.loads就能得到列表;但读取文件时拿到的是包含外层引号、内部转义符的原始内容,单次json.loads只会解析得到内容为数组JSON串的字符串,而非列表本身。

解决方案

你可以按需选择以下两种方案调整:

  • 方案1:修改JSON文件内容
    直接删除prueba.json的外层双引号和内部的转义斜杠,文件内容改为纯JSON数组即可:
["sbs", "sb", "bs", "v", ""]

调整后原有读取代码无需修改,运行即可直接得到列表类型结果,更符合JSON文件的规范使用方式。

  • 方案2:不修改文件,调整解析逻辑
    在原有解析基础上多加一次json.loads调用,对第一次解析得到的字符串做二次解析即可拿到列表,示例代码如下(补充了更安全的with文件读取写法,自动完成文件关闭操作):
import json

with open("prueba.json", "r", encoding="utf-8") as f:
    # 第一次解析得到字符串类型的数组文本
    str_content = json.load(f)
    # 第二次解析得到目标列表
    file_data = json.loads(str_content)

print(type(file_data)) # 输出 <class 'list'>
print(file_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:03