如何使用Python向JSON文件中添加内容?

0 投票
2 回答
1990 浏览
提问于 2025-04-18 06:59

好的。 (抱歉,我的英语不好 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))

撰写回答