如何使用Python向JSON文件中添加内容?
好的。 (抱歉,我的英语不好 T_T)
{
"BlockA": {
"BlockB": {
"name": "BlockB",
"value": "Value_B"
}
}
这是我简单的 JSON 文件。
我需要把它改成这样:
{
"BlockA": {
"BlockB": {
"name": "BlockB",
"value": "Value_B"
},
"BlockC": {
"name": "BlockC",
"value": "Value_C"
}
}
我试过用 append、json.loads、json.load、json.dumps、json.dump 等方法……
但是所有的函数都给我报错。
我试过:
import json
f = open(".\simple.json", "r")
json_obj = json.load(f)
#json_obj.append << doesnt work
#json_obj.dump("blahblah", Ensureblahblah=False) << doesnt work too.
使用的是 Python 3.4.1 版本。
2 个回答
4
JSON其实就是一种把数据变成字符串的方式。如果你解析一个JSON对象,你会得到一个Python字典。如果你解析一个JSON数组,你会得到一个Python列表。如果你解析一个字符串,你就会得到一个字符串……等等。
所以,如果你解析一个JavaScript对象,你也会得到一个字典。字典是没有添加或保存的方法的。
这就意味着:
import json
f = open(".\simple.json", "r")
json_obj = json.load(f) # <--- this is a dictionary!
json_obj['BlockC'] = {'name': '...', 'value': '...'}
然后再把它保存回文件里(如果有疑问,可以查一下JSON的API)
1
这里有一个代码指导的解释
import json
open_file_object = open("/home/action/workspace/playkt/data.json", 'r')
decoded_json = json.load(open_file_object)
print (decoded_json)
"""
{
"BlockA": {
"BlockB": {
"name": "BlockB",
"value": "Value_B"
}
}
}
"""
decoded_json["BlockA"]["BlockC"] = { "name": "BlockC", "value": "Value_C" }
print(decoded_json)
"""
{
"BlockA": {
"BlockB": {
"name": "BlockB",
"value": "Value_B"
},
"BlockC": {
"name": "BlockC",
"value": "Value_C"
}
}
}
"""
#write to file
output_file = "/home/action/workspace/playkt/data.json"
with open(output_file, 'w') as write_file_object:
#Serialize dictionary to a JSON formatted string and write to file
write_file_object.write(json.dumps(decoded_json))