Python读取JSON文件并修改

新手上路,请多包涵

您好我正在尝试从 json 文件中获取数据并插入和 id,然后执行 POST REST。我的文件 data.json 有:

 {
    'name':'myname'
}

我想添加一个 id 以便 json 数据看起来像:

  {
     'id': 134,
     'name': 'myname'
 }

所以我尝试了:

 import json
f = open("data.json","r")
data = f.read()
jsonObj = json.loads(data)

我无法加载 json 格式文件。我应该怎么做才能将 json 文件转换为 json 对象并添加另一个 id 值。

原文由 codeBarer 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 639
2 个回答

使用 data['id'] = ... 设置项目。

 import json

with open('data.json', 'r+') as f:
    data = json.load(f)
    data['id'] = 134 # <--- add `id` value.
    f.seek(0)        # <--- should reset file position to the beginning.
    json.dump(data, f, indent=4)
    f.truncate()     # remove remaining part

原文由 falsetru 发布,翻译遵循 CC BY-SA 3.0 许可协议

faltru 的解决方案很好,但有一个小错误:

假设原始“id”长度大于 5 个字符。然后,当我们使用新的“id”(只有 3 个字符的 134)进行转储时,从文件中的位置 0 开始写入的字符串的 _长度比原始长度短_。原始内容在文件中留下的额外字符(例如“}”)。

我通过替换原始文件解决了这个问题。

 import json
import os

filename = 'data.json'
with open(filename, 'r') as f:
    data = json.load(f)
    data['id'] = 134 # <--- add `id` value.

os.remove(filename)
with open(filename, 'w') as f:
    json.dump(data, f, indent=4)

原文由 VadimBelov 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏