我以json格式收到此回复,但是如果有人可以向我解释这将是多么感谢,我在理解如何获取我需要的特定物品方面遇到了很多麻烦。我试图进入“杀手”,然后进入“价值”。我尝试使用:
kills = data['data']['kills']['value']
print(kills)
但是那行不通。
{
"data":{
"platformInfo":{
"platformSlug":"origin",
"platformUserId":"not_aqex",
"platformUserHandle":"not_aqex",
"platformUserIdentifier":"not_aqex",
"avatarUrl":"https://secure.download.dm.origin.com/production/avatar/prod/1/599/208x208.JPEG",
"additionalParameters":null
},
"userInfo":{
"userId":null,
"isPremium":false,
"isVerified":false,
"isInfluencer":false,
"countryCode":null,
"customAvatarUrl":null,
"customHeroUrl":null,
"socialAccounts":[
]
},
"metadata":{
"currentSeason":2,
"activeLegend":"legend_9",
"activeLegendName":"Octane"
},
"segments":[
{
"type":"overview",
"attributes":{
},
"metadata":{
"name":"Lifetime"
},
"expiryDate":"2020-09-30T03:10:32.6124204+00:00",
"stats":{
"level":{
"rank":null,
"percentile":null,
"displayName":"Level",
"displayCategory":"Combat",
"category":null,
"metadata":{
},
"value":65,
"displayValue":"65",
"displayType":"Unspecified"
},
"kills":{
"rank":null,
"percentile":null,
"displayName":"Kills",
"displayCategory":"Combat",
"category":null,
"metadata":{
},
"value":427,
"displayValue":"427",
"displayType":"Unspecified"
},
"seasonWins":{
"rank":null,
"percentile":null,
"displayName":"Season 1 Wins",
"displayCategory":"Game",
"category":null,
"metadata":{
},
"value":0,
"displayValue":"0",
"displayType":"Unspecified"
},
"rankScore":{
"rank":null,
"percentile":null,
"displayName":"Rank Score",
"displayCategory":"Game",
"category":null,
"metadata":{
"iconUrl":"https://trackercdn.com/cdn/apex.tracker.gg/ranks/gold3.png",
"rankName":"Gold 3"
},
"value":3650,
"displayValue":"3,650",
"displayType":"Unspecified"
},
"season4Wins":{
"rank":null,
"percentile":null,
"displayName":"Season 4 Wins",
"displayCategory":"Game",
"category":null,
"metadata":{
},
"value":10,
"displayValue":"10",
"displayType":"Unspecified"
}
}
},
{
"type":"legend",
"attributes":{
"id":"legend_9"
},
"metadata":{
"name":"Octane",
"imageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/octane-tile.png",
"tallImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/octane-tall.png",
"bgImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/octane-concept-bg-small.jpg",
"isActive":true
},
"expiryDate":"2020-09-30T03:10:32.6124204+00:00",
"stats":{
"kills":{
"rank":null,
"percentile":79,
"displayName":"Kills",
"displayCategory":"Combat",
"category":null,
"metadata":{
},
"value":279,
"displayValue":"279",
"displayType":"Unspecified"
},
"season4Wins":{
"rank":null,
"percentile":96.7,
"displayName":"Season 4 Wins",
"displayCategory":"Game",
"category":null,
"metadata":{
},
"value":10,
"displayValue":"10",
"displayType":"Unspecified"
}
}
},
{
"type":"legend",
"attributes":{
"id":"legend_7"
},
"metadata":{
"name":"Lifeline",
"imageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/lifeline-tile.png",
"tallImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/lifeline-tall.png",
"bgImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/lifeline-concept-bg-small.jpg",
"isActive":false
},
"expiryDate":"2020-09-30T03:10:32.6124204+00:00",
"stats":{
"kills":{
"rank":null,
"percentile":69,
"displayName":"Kills",
"displayCategory":"Combat",
"category":null,
"metadata":{
},
"value":136,
"displayValue":"136",
"displayType":"Unspecified"
}
}
},
{
"type":"legend",
"attributes":{
"id":"legend_8"
},
"metadata":{
"name":"Pathfinder",
"imageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/pathfinder-tile.png",
"tallImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/pathfinder-tall.png",
"bgImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/pathfinder-concept-bg-small.jpg",
"isActive":false
},
"expiryDate":"2020-09-30T03:10:32.6124204+00:00",
"stats":{
"seasonWins":{
"rank":null,
"percentile":null,
"displayName":"Season 1 Wins",
"displayCategory":"Game",
"category":null,
"metadata":{
},
"value":0,
"displayValue":"0",
"displayType":"Unspecified"
}
}
},
{
"type":"legend",
"attributes":{
"id":"legend_5"
},
"metadata":{
"name":"Bloodhound",
"imageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/bloodhound-tile.png",
"tallImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/bloodhound-tall.png",
"bgImageUrl":"https://trackercdn.com/cdn/apex.tracker.gg/legends/bloodhound-concept-bg-small.jpg",
"isActive":false
},
"expiryDate":"2020-09-30T03:10:32.6124204+00:00",
"stats":{
"kills":{
"rank":null,
"percentile":43,
"displayName":"Kills",
"displayCategory":"Combat",
"category":null,
"metadata":{
},
"value":12,
"displayValue":"12",
"displayType":"Unspecified"
}
}
}
],
"availableSegments":[
{
"type":"legend",
"attributes":{
},
"metadata":{
}
}
],
"expiryDate":"2020-09-30T03:10:32.6124204+00:00"
}
}
来自编辑者的注意:我使用This cool online JSON Formatter & Validator来清理提供的JSON数据。我经常使用此工具,并强烈推荐它。
答案 0 :(得分:1)
这是您的数据的精简版本,仅使用kills
键及其每个value
键:
{
"data":{
"segments":[
{
"stats":{
"kills":{
"value":427,
},
}
},
{
"stats":{
"kills":{
"value":279,
},
}
},
{
"stats":{
"kills":{
"value":136,
}
}
},
{
"stats":{
}
},
{
"stats":{
"kills":{
"value":12,
}
}
}
],
}
}
请注意,segments
键下方的列表中有五个“段”词典,但是其中只有四个包含kills
键。您可以使用以下方法为这四个中的每一个地址value
:
record['data']['segments'][0]['stats']['kills']['value']
record['data']['segments'][1]['stats']['kills']['value']
record['data']['segments'][2]['stats']['kills']['value']
record['data']['segments'][4]['stats']['kills']['value']
index == 3
中的segments
条目没有kills
键,因此尽管有五个段,但只有四个kills/value
值。这是支持所有这些的代码,以及运行此代码的结果:
data = """{
"data":{
"segments":[
...
}"""
record = json.loads(data)
print(record['data']['segments'][0]['stats']['kills']['value'])
print(record['data']['segments'][1]['stats']['kills']['value'])
print(record['data']['segments'][2]['stats']['kills']['value'])
try:
print(record['data']['segments'][3]['stats']['kills']['value'])
except Exception:
print("invalid reference")
print(record['data']['segments'][4]['stats']['kills']['value'])
结果:
427
279
136
invalid reference
12
请注意,尽管我显示了上面数据的修剪版本,但是我在提供的完整数据版本上运行了此代码,这确实是有效的JSON。
答案 1 :(得分:0)
只是扩展@steve的答案
更多修剪版本,以实现更好的可视化
"data":
{
"segments":
[
{"stats":{"kills":{"value":427}}},
{"stats":{"kills":{"value":279}}},
{"stats":{"kills":{"value":136}}},
{"stats":{"seasonWins":{"value":0}}},
{"stats":{"kills":{"value":12}}},
],
"availableSegments":
[
{"type":"legend", "attributes":{}, "metadata":{}}
],
"expiryDate":"2020-09-30T03:10:32.6124204+00:00"
}
让循环更好地理解
for segments in data['data']['segments']:
if 'kills' in segments['stats']: # condition when expected node is not present
print(segments['stats']['kills'])
print(segments['stats']['kills']['value'])
输出
{'value': 427}
427
{'value': 279}
279
{'value': 136}
136
{'value': 12}
12