我基本上有一些数据,在对象中有一个对象..
{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", group:{"id": "XXXX"}}}. You can check this format using "http://chris.photobooks.com/json/default.html" site.
我的要求是不要将它作为字典转换为JSON对象。我试过以下方式
import json
JSON_Datalist = '{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", group:{"id": "XXXX"}}}'
the_dict = json.loads(JSON_DataList)
但是the_dict只给出左侧值,没有正确的值......
如果字符串具有格式..
"[{"sample": false, "radop": null, "view": true, "Example1": null}, {"noMarket": false, "Example2": null}]"
并遵循相同的代码。
JSON_Datalist = '[{"sample": false, "radop": null, "view": true, "Example1": null}, {"noMarket": false, "Example2": null}]'
the_dict = json.loads(JSON_DataList)
它给出了长度为2的字典,这就是预期......
在第一种情况下可以帮我解决一下如何获得字典......
答案 0 :(得分:6)
我在你的第一个例子中发现了两个错误:
group
。这应该是"group"
(带引号)。JSON_Datalist
≠JSON_DataList
(小写与大写字母L)。修好后,我再也没有问题了:
>>> JSON_Datalist = '{"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", "group":{"id": "XXXX"}}}'
>>> the_dict = json.loads(JSON_Datalist)
>>> the_dict
{u'user': {u'username': u'XYZ', u'group': {u'id': u'XXXX'}, u'id': u'XXXX'}, u'id': u'XXXX', u'name': u'xyz'}
答案 1 :(得分:1)
修复后问题组应为“组”,下面的代码可以满足您的要求
json_data={"id":"XXXX", "name": "xyz", "user" : { "id": "XXXX", "username":"XYZ", "group":{"id": "XXXX"}}}
data = json.dumps(json_data)
json_to_python = json.loads(data)
print (json_to_python)
{'id': 'XXXX', 'name': 'xyz', 'user': {'id': 'XXXX', 'username': 'XYZ', 'group': {'id': 'XXXX'}}}
答案 2 :(得分:0)
我已经想出如何通过Python的the_dict['user']['group']['id']
表达式动态生成eval
。
Keys 是来自用户的输入,以:
分隔。示例:user:group:id
。
代码:
RefCount = 0
RespDict = json.loads(JSON_Datalist.content) #convert strings to Java object using JSON
SplitKeys = Keys.split(":")
KeyCount = len(SplitKeys)
CommandText = "RespDict" #To setup command line based on keys information
while (RefCount <KeyCount):
CommandText = CommandText+"['"+SplitKeys[RefCount]+"']"
RefCount = RefCount + 1
print CommandText
print eval(CommandText) #Final key value