打印在Python中解析JSON

时间:2017-11-13 10:15:31

标签: python json python-3.x

假设这是我必须解析的.JSON文件:

{
"item": {
    "allInventory": {
        "onHand": 64,
        "total": {
            "1000": 0,
            "1001": 6,
            "1002": 5,
            "1003": 3,
            "1004": 12,
            "1005": 0
        }
    }
},
"image": {
    "tag": "/828402de-6cc8-493e-8abd-935a48a3d766_1.285a6f66ecf3ee434100921a3911ce6c.jpeg?odnHeight=450&odnWidth=450&odnBg=FFFFFF"
 }
}

我如何打印总值,如:

1000 - 0
1001 - 6
1002 - 5
1003 - 4
1004 - 12
1005 - 0

我已经解析了这些值,但我不确定如何实际打印它们。我已经花了一段时间在此,无法找到解决方案所以任何帮助表示赞赏。这是我到目前为止的代码:

import requests
import json

src = requests.get('https://hastebin.com/raw/nenowimite').json()

stats = src['item']['allInventory']['total']
print(stats)

4 个答案:

答案 0 :(得分:0)

你快到了:

for item in stats.items():
    print '%d - %d' % item

这样做stats已经是dict。查看文档,有items方法返回"字典的(键,值)对列表的副本"。每对格式化为两个数字,即'%d - %d'

答案 1 :(得分:0)

这可以通过for循环完成,如下所示:

for key in stats.keys():
    print(key, '-', stats[key])

答案 2 :(得分:0)

使用完整的Python 3.6,你可以做到(与Ecir的回答类似)

for key, value in stats.items():
    printf(f'{key} - {value}')

但是关于什么是键和值以及使用f-string插值更清楚。

答案 3 :(得分:-1)

您可以尝试:

>>> import json
>>> data= """{
"item": {
    "allInventory": {
        "onHand": 64,
        "total": {
            "1000": 0,
            "1001": 6,
            "1002": 5,
            "1003": 3,
            "1004": 12,
            "1005": 0
        }
    }
},
"image": {
    "tag": "/828402de-6cc8-493e-8abd-935a48a3d766_1.285a6f66ecf3ee434100921a3911ce6c.jpeg?odnHeight=450&odnWidth=450&odnBg=FFFFFF"
 }
}"""
>>> data = json.loads(data)
>>> print data["item"]["allInventory"]["total"]
{'1005': 0, '1004': 12, '1003': 3, '1002': 5, '1001': 6, '1000': 0}