解析随每个API查询而更改的JSON对象

时间:2014-12-09 01:47:56

标签: python json

我有一些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"
            }
        }
    }

2 个答案:

答案 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.loadsd['data'].keys()[0]来实现此目的。