[英]How do I read json content from python file that I have made into an executable (Mac)
[英]How do I read a .json file that doesn't have [ ]?
我在 Python 中有一个 .json 文件,如下所示:
{
"abc_id": "ABC-2019-1945",
"def_id": "20"
},
{
"abc_id": "ABC-2019-1944",
"def_id": "200"
}
我正在尝试使用json.load(open(json_path,"r"))
读取它json.load(open(json_path,"r"))
但它给了我一个错误,因为它有多个 .json 对象。
看起来只需在文件开头添加[
和]
就可以解决问题,但我不知道如何向文件中添加任何我无法读取的内容(为每个文件手动添加是对我来说是一个糟糕的解决方案)。 我也尝试将文件作为文本文件读取,但我不知道如何将 .json 作为文本读取。
任何人都可以为我的问题建议一个好的解决方案吗?
错误是因为 JSON 无效,不仅因为缺少 [],还因为每个条目中 def_id 键末尾的逗号是错误的。 每个对象中的最后一个元素不得以逗号结尾。
您可以通过https://jsonlint.com/运行它进行检查。
有效的
json.loads('[{"abc_id": "ABC-2019-1945", "def_id": "20"}, {"abc_id": "ABC-2019-1944", "def_id": "200"}]')
由于多余的逗号而无效
json.loads('[{"abc_id": "ABC-2019-1945", "def_id": "20",}, {"abc_id": "ABC-2019-1944", "def_id": "200",}]')
所以原始的JSON需要是这个
[
{
"abc_id": "ABC-2019-1945",
"def_id": "20"
},
{
"abc_id": "ABC-2019-1944",
"def_id": "200"
}
]
** 更新 ** 现在问题已修改为包含您可以使用的有效 JSON
with open(json_path,"r") as f:
d = f.read()
json.loads(f"[{data}]")
# or
json.loads("[" + data + "]")
# or
json.loads("[%s]" % data)
# or
json.loads("[{}]" % data)
json模块提供了两种解析 JSON 对象的方法(同样适用于序列化):
这是最终的代码:
with open(json_path,"r") as f:
data = f.read()
json.loads("["+data+"]")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.