因此,假设我有一个存储在变量名称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)
答案 0 :(得分:0)
jsondata.key中的键是属性的名称。在幕后,像jsondata.__getattr__("key")
之类的东西。与您的key = "address.state"
无关。
如果您坚持这样做,则可能需要重写__getattr__
函数以拆分“ address.state”并递归调用超类的__getattr__
。