如何通过Python访问JSON中的嵌套对象
我在JSON文件中有一个条目。在如何通过Python访问JSON中的嵌套对象,python,json,Python,Json,我在JSON文件中有一个条目。在“对象”:[]列表中,我有“标题”:。我想创建一个列表,在每个JSON列表中添加每个“title:的值。最后,我的目标是列出如下清单: titles=[Mastercard,Mastercard,Alienware,Oppo,Alienware,…] { "ID": "ckksku7b800003e5m5vne0v7c", "DataRow ID": "ckkskgs561yh00sgo
“对象”:[]
列表中,我有“标题”:
。我想创建一个列表,在每个JSON列表中添加每个“title:
的值。最后,我的目标是列出如下清单:
titles=[Mastercard,Mastercard,Alienware,Oppo,Alienware,…]
{
"ID": "ckksku7b800003e5m5vne0v7c",
"DataRow ID": "ckkskgs561yh00sgog3vf1v29",
"Labeled Data": "https://storage.labelbox.com/ckkqt5y5ulks20757tbduodbw%2Fe2510252-76ba-df14-193b-43d4527d705a-Screenshot%202021-02-05%20at%2017.46.56.png?Expires=1614084797277&KeyName=labelbox-assets-key-1&Signature=e69tqkxYhNNWkJL3TaxA9wjtYGM",
"Label": {
"objects": [
{
"featureId": "ckkskpirs0koo0y771e2veiik",
"schemaId": "ckkskil310j1o0y8r0fu252jy",
"title": "Mastercard",
"value": "mastercard",
"color": "#006FA6",
"bbox": {
"top": 631,
"left": 891,
"height": 25,
"width": 40
},
"instanceURI": "https://api.labelbox.com/masks/feature/ckkskpirs0koo0y771e2veiik?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2txdDV5NmFtbm1iMDc0MGpsem03d2RwIiwib3JnYW5pemF0aW9uSWQiOiJja2txdDV5NXVsa3MyMDc1N3RiZHVvZGJ3IiwiaWF0IjoxNjEyODc1MTk3LCJleHAiOjE2MTU0NjcxOTd9.P-MyOgZidmSZSTLfhwpSsRfOaovsReP5MzpDtsrnWs0"
},
{
"featureId": "ckkskqn410l530y770svj1z3g",
"schemaId": "ckkskil310j1o0y8r0fu252jy",
"title": "Mastercard",
"value": "mastercard",
"color": "#006FA6",
"bbox": {
"top": 374,
"left": 1248,
"height": 22,
"width": 33
},
"instanceURI": "https://api.labelbox.com/masks/feature/ckkskqn410l530y770svj1z3g?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2txdDV5NmFtbm1iMDc0MGpsem03d2RwIiwib3JnYW5pemF0aW9uSWQiOiJja2txdDV5NXVsa3MyMDc1N3RiZHVvZGJ3IiwiaWF0IjoxNjEyODc1MTk3LCJleHAiOjE2MTU0NjcxOTd9.P-MyOgZidmSZSTLfhwpSsRfOaovsReP5MzpDtsrnWs0"
},
{
"featureId": "ckkskshox0luo0y77gozzbuzu",
"schemaId": "ckksks2sh0lrl0y8rcq970g3u",
"title": "Alienware",
"value": "alienware",
"color": "#A30059",
"bbox": {
"top": 436,
"left": 1901,
"height": 31,
"width": 86
},
"instanceURI": "https://api.labelbox.com/masks/feature/ckkskshox0luo0y77gozzbuzu?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2txdDV5NmFtbm1iMDc0MGpsem03d2RwIiwib3JnYW5pemF0aW9uSWQiOiJja2txdDV5NXVsa3MyMDc1N3RiZHVvZGJ3IiwiaWF0IjoxNjEyODc1MTk3LCJleHAiOjE2MTU0NjcxOTd9.P-MyOgZidmSZSTLfhwpSsRfOaovsReP5MzpDtsrnWs0"
},
{
"featureId": "ckksktu8c0mhq0y8r6a82cjgm",
"schemaId": "ckkskil300j1g0y8r5kbgguk9",
"title": "OPPO",
"value": "oppo",
"color": "#1CE6FF",
"bbox": {
"top": 1101,
"left": 1837,
"height": 19,
"width": 51
},
"instanceURI": "https://api.labelbox.com/masks/feature/ckksktu8c0mhq0y8r6a82cjgm?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2txdDV5NmFtbm1iMDc0MGpsem03d2RwIiwib3JnYW5pemF0aW9uSWQiOiJja2txdDV5NXVsa3MyMDc1N3RiZHVvZGJ3IiwiaWF0IjoxNjEyODc1MTk3LCJleHAiOjE2MTU0NjcxOTd9.P-MyOgZidmSZSTLfhwpSsRfOaovsReP5MzpDtsrnWs0"
},
{
"featureId": "ckkxvfpv305j00y8k1hvn03e8",
"schemaId": "ckksks2sh0lrl0y8rcq970g3u",
"title": "Alienware",
"value": "alienware",
"color": "#A30059",
"bbox": {
"top": 505,
"left": 2276,
"height": 23,
"width": 92
},
"instanceURI": "https://api.labelbox.com/masks/feature/ckkxvfpv305j00y8k1hvn03e8?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiJja2txdDV5NmFtbm1iMDc0MGpsem03d2RwIiwib3JnYW5pemF0aW9uSWQiOiJja2txdDV5NXVsa3MyMDc1N3RiZHVvZGJ3IiwiaWF0IjoxNjEyODc1MTk3LCJleHAiOjE2MTU0NjcxOTd9.P-MyOgZidmSZSTLfhwpSsRfOaovsReP5MzpDtsrnWs0"
}
],
"classifications": []
},
...
}
更新
这就是我根据建议将代码更改为的内容
for i in range(0, len(data)):
line = data[i]
objects = line['Label']['objects']
classes = [o['title'] for d in data for o in objects]
print(classes)
这是输出:
['Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', ...
'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard']
['OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', ...
'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO', 'OPPO']
['Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', ...
'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard']
['Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', ...
'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard', 'Mastercard']
['Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware', 'Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware', 'Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware',
...
'Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware']
似乎您应该能够通过列表理解来做到这一点:
titles=[o['title']表示数据中的d,o表示数据中的d['Label']['objects']]
输出(对于包含上述对象的列表):
似乎您应该能够通过列表理解来做到这一点:
titles=[o['title']表示数据中的d,o表示数据中的d['Label']['objects']]
输出(对于包含上述对象的列表):
简单的方法是:
title = []
for j in data['Label']['objects']:
title.append(j['title'])
输出:
['Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware']
如果数据是dict列表:
title = []
for d in data:
for obj in d['Label']['objects']:
title.append(obj['title'])
简单的方法是:
title = []
for j in data['Label']['objects']:
title.append(j['title'])
输出:
['Mastercard', 'Mastercard', 'Alienware', 'OPPO', 'Alienware']
如果数据是dict列表:
title = []
for d in data:
for obj in d['Label']['objects']:
title.append(obj['title'])
检查编辑。我正在为多个JSON条目运行此循环。@很抱歉,我没有说清楚,您应该替换整个循环,包括范围(0,len(数据))中的I的
:
用这一行。@oo92例如,当我用你的code@oo92您的数据
值是否与演示中的值不同?请检查编辑。我正在为多个JSON条目运行此循环。@很抱歉,我没有说清楚,您应该替换整个循环,包括范围(0,len(数据))中的I的:
用这一行。@oo92例如,当我用你的code@oo92您的数据
值是否与演示中的值不同?