我有一些JSON,我试图使用python进行解析。问题是它从每次返回的JSON中生成唯一编号的API返回,这使我很难弄清楚如何解析。
下面是一个示例:返回的JSON中的所有内容都是统一的,除了一个对象(在此示例中," 258")随每个结果的变化(即35432,2848585等)。
简而言之,我无法在我的代码中写data = json['data']['258']['name']
,因为" 258"每次都改变。
data
中始终只有一个项目,所以我尝试了json['data'][0]['name']
,但这没有用。
有没有一种方法可以解析JSON哪里有一个正在改变的对象,因为它始终是['data']
中唯一的对象?也许有一些代码只能搜索name:"matt"
的
{
data: {
258: {
name: "matt"
}
}
}
答案 0 :(得分:1)
如果您确定"数据"中只有一个对象。标签,你可以这样做:
import json
# Convert the JSON data into a Python dictionary
d = json.loads(json_data)
# Check if the data tag is present
if "data" in d:
# Loop through all the inner keys (in your case just the single integer key)
for key in d["data"]:
# Use the "key" variable in your path
print d["data"][key]["name"]
搜索结构:
def dict_search(key, value, p_dictionary):
""" Searches for a specific key, value combination within a multilevel python dictionary """
for k in p_dictionary:
if k == key and p_dictionary[k] == value:
print "Found %s, %s!" % (key, value)
return p_dictionary
# Check if inner dictionary is found
if type(p_dictionary[k]) is dict:
print "Using recursion to check the inner dictionary.."
dict_search(key, value, p_dictionary[k])
答案 1 :(得分:0)
我实际上是通过关注@ Jacob-IT来使用json.loads
和d['data'].keys()[0]
来实现此目的。