我已加载了JSON文件,但我无法解析它以更新或插入值。
JSON结构与此类似:
{
"nodes": [
{
"id": "node1",
"x": 21.0,
"y": 8.0
},
{
"id": "node5",
"x": 3.0,
"y": 5.0
}
]
}
虽然我检索节点的python代码与此类似:
jsonData = defaultdict(list)
with open('data.json', 'r') as f:
jsonData = json.load(f)
print jsonData['nodes']['id'] == 'node5'
我得到的错误是" TypeError:list indices必须是整数,而不是str"。
如何检索节点以及如何更新节点?
答案 0 :(得分:1)
在您的JSON中,nodes
是一个对象列表,因此您不能尝试使用类似于'id'
的字符串来访问其中的元素。
相反,你可以迭代它:
with open('data.json', 'r') as f:
jsonData = json.load(f)
for item in jsonData['nodes']:
print item['id'], item['x'], item['y']
[编辑] 为了解决你的评论:
with open('data.json', 'r') as f:
jsonData = json.load(f)
jsonData['nodes'] = {e['id']: e for e in jsonData['nodes']}
jsonData['nodes']['node5']['z'] = 12
答案 1 :(得分:0)
此代码段向旧节点添加新值(z = 12)并更新现有节点y
import json
from collections import defaultdict
jsonData = defaultdict(list)
with open('c:/temp/data.json', 'r') as f:
jsonData = json.load(f)
for item in jsonData['nodes']:
if item['id']=='node5':
item['y'] = 5
item['z'] = 12