python - 使用 Python 解码 JSON 并存储嵌套对象

标签 python json

我正在尝试用 Python 解码以下 JSON 文件:

{"node":[
    {
    "id":"12387",
    "ip":"172.20.0.1",
    "hid":"213", 
    "coord":{"dist":"12","lat":"-9.8257","lon":"65.0880"},
    "status":{"speed":"90","direction":"N"},
    "ts":"12387"}
]
}

通过使用:

json_data=open('sampleJSON')
jdata = json.load(json_data)
for key, value in jdata.iteritems():
    print "Key:"
    print key
    print "Value:"
    print value

我的输出是:

Key:
node
Value:
[{u'status': {u'direction': u'N', u'speed': u'90'}, u'ip': u'172.20.0.1', u'ts': u'12387', u'coord': {u'lat': u'-9.8257', u'lon': u'65.0880', u'dist': u'12'}, u'hid': u'213', u'id': u'12387'}]

我希望能够打印嵌套对象的键和值 statuscoord,以及 node、“hid”、“id”、“ip”和“ts”。

我如何遍历所有嵌套值?

提前致谢!

最佳答案

您可以使用递归函数将其全部打印出来。这可以改进,但这里是想法:

import json

json_data = open('data.json')
jdata = json.load(json_data)

def printKeyVals(data, indent=0):
    if isinstance(data, list):
        print
        for item in data:
            printKeyVals(item, indent+1)
    elif isinstance(data, dict):
        print
        for k, v in data.iteritems():
            print "    " * indent, k + ":",
            printKeyVals(v, indent + 1)
    else:
        print data

输出

 node:

         status:
             direction: N
             speed: 90
         ip: 172.20.0.1
         ts: 12387
         coord:
             lat: -9.8257
             lon: 65.0880
             dist: 12
         hid: 213
         id: 12387

否则,您可以使用:

import pprint
pprint.pprint(jdata)

关于python - 使用 Python 解码 JSON 并存储嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12966308/

相关文章:

json - Circe 和 Scala 的枚举类型

python - 快速按元素对 numpy 数组求和

python - PyQt 打开另一个窗口

Python Matplotlib 如何只获取表格

android - kotlinx.serialization : How to parse to different varaiable name than the exact name of JSON key

json - 带 [ ] 的 getJSON 不起作用

python - 无法从 tf.keras 模型 -> 量化卡住图 -> 带有 TOCO 的 .tflite

python - 如何在 Python 中比较两个以上的列表?

java - 使用java解析JSON文件中的所有JSONObject

json - 如何使用 try.zorba.io 从 JSON 运行 JSONiq