在python中解析json(来自freebase的响应)

2024-09-28 18:58:41 发布

您现在位置:Python中文网/ 问答频道 /正文

在python中解析json(来自freebase的响应) 这个问题是关于JSON解析的。我正在查询freebase中的一些数据并得到一个JSON对象。响应有以下结构

{
  "result": [
    {
      "attribute0": [
        "attrbVal0"
      ],
      "attribute1": [],
      "attribute2": "attrbVal1",
      "attribute3": [
        "val1",
        "val2"
      ],
      "creator": "abc",
      "key": [
        "val2",
        "val3"
      ]
    }
  ]
}

请注意,属性的值可以是零,也可以是任意数量的值。如果没有值,则表示为[]或null。 我不知道这组属性。它会随着查询的变化而变化,所以我不能像

^{pr2}$

从上面的JSON我想得到值为[]或{}的属性。 我试着用下面的方法来获取属性和值

print response.keys()

打印结果

for r in response['result']: 
    print r

这会一次性打印出里面的所有东西。那就是

print len(result) #prints 1

我尝试了以下方法来获取属性列表,但没有成功。在

result = response['result']
elem = json.loads(result);
keys = elem.keys()

因此,我正在寻找从上面的json中获取所有键值对的代码,以及指出我的错误的一些解释。在


Tags: 数据对象方法json属性responseresultkeys
1条回答
网友
1楼 · 发布于 2024-09-28 18:58:41

您可以循环字典的,将键和值成对地提供给您;这样您就可以对值进行筛选:

for result in response['result']:
    for attrname, value in result.items():
        if not value:  # empty list or None
            print attrname

注意,response['result']是一个列表,包含(大概)一个或多个dictionary对象。在

在Python中,空列表和None(与JSONnull的Python等价物)在布尔上下文中都被视为false,因此对于那些值为空列表或原始JSON响应中的not value的属性,not value是{}。在

演示:

^{pr2}$

所以在示例输入中,只有attribute1有一个空值。在

相关问题 更多 >