我有一个Python脚本,使文件具有无效的JSON。 现在我想操作这个JSON文件,使它成为一个有效的JSON文件,在每个对象之间添加一个逗号,在文件a的开头['最后一个']'。 有没有办法单独使用JSON或者我必须找到其他读写函数的方法?
Exsample_File.json:
{
"firstName": "Bidhan",
"lastName": "Chatterjee",
"age": 40,
"email":"bidhan@example.com"
}
{
"firstName": "hanbid",
"lastName": "jeeChatter",
"age": 10,
"email":"example@bidhan.com"
}
....
n times
New_File.json:
[
{
"firstName": "Bidhan",
"lastName": "Chatterjee",
"age": 40,
"email":"bidhan@example.com"
},
{
"firstName": "hanbid",
"lastName": "jeeChatter",
"age": 10,
"email":"example@bidhan.com"
},
....
n times
]
这是制作此JSON文件的函数。我不想触摸生成str的其他代码。
data = json.loads(str)
with open('Example_File.json','ab')as outfile:
json.dump(data, outfile, indent=2)
到目前为止,我没有想法解决这个问题。所以没有可以提供帮助的代码示例。
结果应该像New-File
答案 0 :(得分:0)
你不能
words.replace('}','},')
这应该取代'}'的所有实例。使用'},'
答案 1 :(得分:0)
首先,我认为有一种方法可以直接将其解析为JSON数组。 但是,如果您的JSON对象没有嵌套,解析它们的简单方法是拆分字符串:
with open(YOUR_FILE) as jsons_file:
jsons = [x.strip() + '}' for x in jsons_file.read().split('}')][:-1]
现在您可以使用json
的库dump
或dumps
json.dumps(jsons)
或
with open(OUT_FILE, 'w') as out_file:
json.dump(jsons, out_file)
答案 2 :(得分:0)
您可能必须将内容读取为字符串,对其进行操作并以JSON格式加载。像这样的东西,
import json
with open('Example.json','r') as f:
data = f.read()
data = "[" + data.replace("}", "},", data.count("}")-1) + "]"
json_data = json.loads(data)
似乎您的数据的数字以0开头,因此您可能会遇到异常“ValueError”。您可以参考如何从Why is JSON invalid if an integer begins with 0
处理问题注意:我从“Example.json”手动删除了0
答案 3 :(得分:0)
要在每个对象之间添加自动逗号并在文件中添加方括号以使其完整json,只需编写一个简单的jq查询
jq -s '.' file_name