如何从python中的JSON对象读取属性,此属性存储在变量中

时间:2018-12-07 05:20:02

标签: python json python-3.x

因此,假设我有一个存储在变量名称jsonobject中的JSON对象,并且想从其中读取特定属性,可以说address.state。如果我说jsonobject.address.state,我将得到预期的输出,但是如果我要查找的属性(即address.state)存储在变量中,该怎么说key呢? 所以key = "address.state",当我尝试获取jsonobject.key时,我收到一条错误消息,说jsonobject has no property names key. 我该如何实现。

    def main():
            #messagebody='{"name":"vivke",  "age":"26", "comname":"Infracloud", "address":{ "street":44, "state":"NY" } }'
            #i am HTTP POSTing above message format to the function
            messagebody = request.get_data().decode("utf-8")
            key = "address.state"
            #convert messagebody to JSON
            jsondata = jsonparser.json2obj(messagebody)
            return jsondata.address.state # this works file
            return jsondata.key #isnt working

这是jsonparser的代码

import json
from collections import namedtuple

def _json_object_hook(d): return namedtuple('X', d.keys())(*d.values())
def json2obj(data): return json.loads(data, object_hook=_json_object_hook)

1 个答案:

答案 0 :(得分:0)

jsondata.key中的键是属性的名称。在幕后,像jsondata.__getattr__("key")之类的东西。与您的key = "address.state"无关。

如果您坚持这样做,则可能需要重写__getattr__函数以拆分“ address.state”并递归调用超类的__getattr__