例如,我有此JSON:
"products": {
"5117293": {
"id": 5117293,
"brandId": 12,
"price": "12$"
"mediaById": {
"104290597": {
"id": "17_104290597",
"group": "swatch",
"type": "image",
"src": "https://foo.com/image1.jpg"
},
"104725944": {
"id": "7_104725947",
"group": "main",
"type": "image",
"src": "https://foo.com/image2.jpg"
}
},
}
假设我要访问第二张图片 image2.jpg 。如何在不知道ID的情况下使用Python JSON库执行此操作? (在此示例中访问第二个元素)。这是我尝试过的并且显然失败的方法(编辑:我意识到它不起作用,我只想以类似的方式)。
image = json_content['products']["5117293"]["mediaById"][1]["src"]
这将显示一个关键错误。
答案 0 :(得分:1)
要获取基于“第二”索引的顺序,可以使用以下顺序:
nth = 2
nth_image_id = json_content['products']["5117293"]["mediaById"].keys()[nth - 1]
image = json_content['products']["5117293"]["mediaById"][nth_image_id]["src"]
正如其他人在评论中指出的那样,顺序可能没有很好地定义。但是,在这种情况下,如果您知道ID号将一直在增加,则可以使用它来获取第n个元素,换句话说,它是定义良好的“ nth”。
nth = 2
# determine the nth id
image_ids = json_content['products']["5117293"]["mediaById"].keys()
image_ids = [int(x) for x in image_ids]
image_ids.sort()
nth_image_id = image_ids[nth - 1]
# pull the nth image
image = json_content['products']["5117293"]["mediaById"][nth_image_id]["src"]
答案 1 :(得分:1)
您可以这样做:
import json
j = """
{
"products": {
"5117293": {
"id": 5117293,
"brandId": 12,
"price": "12$",
"mediaById": {
"104290597": {
"id": "17_104290597",
"group": "swatch",
"type": "image",
"src": "https://foo.com/image1.jpg"
},
"104725944": {
"id": "7_104725947",
"group": "main",
"type": "image",
"src": "https://foo.com/image2.jpg"
}
}
}
}
}
"""
d = json.loads(j)
print(list(d['products']['5117293']['mediaById'].items())[1][1]['src']) #for the second item
>>> https://foo.com/image2.jpg
#print(list(d['products']['5117293']['mediaById'].items())[0][1]['src']) #for the first item
答案 2 :(得分:0)
我设法通过使用临时列表来获取媒体ID并访问该列表的第二个元素。
images = json_content['products']["5117293"]['mediaById']
imagesList = []
for imageID in images:
imagesList.append(imageID)
image = prod['mediaById'][imagesList[1]]['src']