我有一个.json文件,现在看起来像这样:
{
"users":
[
{"name" : "test"},
{"name" : "test2"}
]
}
我想在{"name" : "test2}
之后直接在Python中添加一行。
我发现的其他问题将给我这个解决方案:
{
"users":
[
{"name" : "test"},
{"name" : "test2"}
]
}{"name" : "test3"} # <-- Wrong place it shouldn't be here
这应该是这样的:
{
"users":
[
{"name" : "test"},
{"name" : "test2"},
{"name" : "test3"} # <-- new line here
]
} # <-- not here
答案 0 :(得分:2)
非常简单:解析你的json以获取一个Python对象,更新python对象,并将其转储回json。
bootstrap
我理解这对于初学者来说可能不那么明显,但是根据json规范,你可以很容易地理解为什么修改json内容的唯一可靠方法是实际解析它。正如您已经注意到的那样,附加到文件中将无法正常工作(您将获得无效的json)。尝试逐行读取文件,检测用户数组的结尾并在此处插入换行符也不会(或只是偶然)工作,因为json格式不会在任何地方强制换行,所以你也可以把所有东西塞进去一行即:
import json
with open("myfile.json") as f:
obj = json.load(f)
obj["users"].append({"name":"was that so complicated, really ?"})
with open("myfile.json", "w") as f:
json.dump(f, obj)
wrt / memory comsuption / perfs等,json不是为大型数据集而设计的(你想要jsonlines或类似的东西)所以你不应该担心它 - 这是你唯一的选择。
答案 1 :(得分:0)
这是一个可能的解决方案。
import json
# your string
json_string = '{
"users":
[
{"name" : "test"},
{"name" : "test2"}
]
}'
# convert it to a python dictionary
json_dict = json.loads(json_string)
# append your data as {key:value}
json_dict['users'].append({'name':'test3'})
# convert it back to string
json_string = json.dumps(json_dict)
print (json_string)