如何使用多个密钥解析JSON相同?

时间:2013-12-29 20:18:36

标签: python json

我有类似这样的json:

{"posts":[{"no":3919193, "p": "kekekekek"}, 
          {"no":3929342, "p": "trololol"}]}

我想提取任何具有“否”键的内容,我该怎么做?

我知道我可以使用json.load进行解析,但我不确定如何访问每个值。提前谢谢!

2 个答案:

答案 0 :(得分:0)

您可以使用列表推导来遍历obj['posts']中的词组:

obj = json.load(...)
[dct for dct in obj['posts'] if 'no' in dct]

例如,

>>> import json

>>> obj = json.loads('''{"posts":[{"no":3919193, "p": "kekekekek"}, 
          {"no":3929342, "p": "trololol"}]}''')

>>> [dct for dct in obj['posts'] if 'no' in dct]
[{u'no': 3919193, u'p': u'kekekekek'}, {u'no': 3929342, u'p': u'trololol'}]

答案 1 :(得分:0)

使用json.load后,您将拥有一个字典,其唯一的键指向字典列表:

data = json.loads("""{"posts":[{"no":3919193, "p": "kekekekek"}, 
      {"no":3929342, "p": "trololol"}]}""")
nos = [i for i in data['posts'] if 'no' in i]

当然,示例中的每个列表元素都满足您的要求,即对象具有键“否”。