使用Python 2.7解析包含null结果的json结果

时间:2013-02-26 20:11:30

标签: python json python-2.7

我想从这个json数据中挑选出“b”标签。 但它导致NameError。 请告诉我们如何改进此代码。

json_data = {"one": null,
         "two": {"a": "1", "b": null},
         "three": "3"
         }

if __name__=="__main__":
    new_data = json.decode(json_data)
    json = json.loads(new_data)
    print json["two"]["b"]

2 个答案:

答案 0 :(得分:0)

您的问题是您正在尝试解码对象,而不是包含JSON的字符串。这意味着Python正在将您的数据解析为dict文字,这导致它试图找到null的值,当然,这在Python中并不存在。相反,你想要创建一个字符串:

json_data = '''{"one": null,
         "two": {"a": "1", "b": null},
         "three": "3"
         }'''

这里我们使用三引号(''')来定义多行字符串。

这应该按预期工作。我认为你只是举一个例子,但值得注意的是,在这种情况下这是毫无意义的,你最好直接定义Python数据结构,而不是直接使用JSON。

答案 1 :(得分:0)

您的代码无效,因为您尝试将Python字典传递给不存在的json.decode()函数。以下内容通过手动将json_data转换为字符串并将其直接传递给json.loads()来解决这些问题,这会将遇到的null转换为None

import json

json_data = '''{"one": null,
                "two": {"a": "1", "b": null},
                "three": "3"
               }'''

if __name__=="__main__":
    json = json.loads(json_data)
    print json["two"]["b"]

输出:

None