我想从这个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"]
答案 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