我在文件中有以下JSON数据:
{
"Generic": {
"main": [{
"one": "Main 1",
"two": "Main 2"
}],
"rows": [
{
"row1": "This is row 1-1",
"row2": "This is row 2-1",
"row3": "This is row 3-1"
},
{
"row1": "This is row 1-2",
"row2": "This is row 2-2",
"row3": "This is row 3-2"
}
]
}
}
我可以像这样访问值:
import json
with open(r'C:\generic.json') as json_data:
json_data = json.load(json_data)
for x in sorted(json_data):
print (x)
print ('main:')
print (json_data[x]['main'][0]['one'])
print (json_data[x]['main'][0]['two'])
print ('rows:')
print (json_data[x]['rows'][0]['row1'])
print (json_data[x]['rows'][0]['row2'])
print (json_data[x]['rows'][0]['row3'])
print ('')
for y in json_data[x]:
print (json_data[x]['rows'][0]['row1'])
返回:
我的问题是如何迭代"rows"
中的所有嵌套词典 - 在这种情况下有2个。你可以看到我对for y in json_data[x]:
的悲惨尝试
注意:我访问第一个循环中的"rows"
数据以显示它是可访问的 - 但我需要弄清楚如何在第二个循环中访问这些行。
任何帮助将不胜感激:)
编辑:
我更接近以下内容 - 我很接近但不确定我遗失的那件小事:
for x in sorted(json_data):
print (x)
print ('main:')
print (json_data[x]['main'][0]['one'])
print (json_data[x]['main'][0]['two'])
print ('rows:')
print (json_data[x]['rows'][0]['row1'])
print (json_data[x]['rows'][0]['row2'])
print (json_data[x]['rows'][0]['row3'])
print ('')
for r in json_data[x]['rows']:
print (json_data[x]['rows'][0]['row1'])
print (json_data[x]['rows'][0]['row2'])
print (json_data[x]['rows'][0]['row3'])
for r in json_data[x]['rows']:
识别"rows"
的正确数量 - 无论是2还是5o - 但只是一遍又一遍地返回第一个字典中的值:(
答案 0 :(得分:1)
循环遍历['rows']
后,您只需使用r
变量即可。使用此:
for r in json_data['Generic']['rows']:
print(r['row1'])
print(r['row2'])
print(r['row3'])
输出:
This is row 1-1
This is row 2-1
This is row 3-1
This is row 1-2
This is row 2-2
This is row 3-2
你只得到第一本字典的原因是 - 你在循环中使用json_data[x]['rows'][0]
。这个[0]
将始终为您提供'rows'
列表中的第一项(字典)。