使用Python2.7解析json(包括空结果名称错误)
我想从这个json数据中选择“b”标记。 但结果是错误的。 请说明如何改进此代码使用Python2.7解析json(包括空结果名称错误),python,json,python-2.7,Python,Json,Python 2.7,我想从这个json数据中选择“b”标记。 但结果是错误的。 请说明如何改进此代码 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[
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"]
这里的问题是您试图解码一个对象,而不是一个包含JSON的字符串。这意味着Python正在将数据解析为
dict
文本,这导致它试图为null
找到一个值,而这在Python中是不存在的。相反,您希望生成一个字符串:
json_data = '''{"one": null,
"two": {"a": "1", "b": null},
"three": "3"
}'''
这里我们使用三重引号('
)来定义多行字符串
这应该像预期的那样起作用。我假定您只是给出了一个示例,但是值得注意的是,在这种情况下,这是毫无意义的,您最好直接定义Python数据结构,而不使用JSON。您的代码不起作用,因为您试图将Python字典传递给不存在的
JSON.decode()
功能。下面通过手动将json\u数据
转换为字符串,并将其直接传递到json.loads()
,从而将遇到的null
s转换为None
s来解决这些问题
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"]
输出:
无
请将异常与您的问题一起发布,包括堆栈跟踪。我尝试打印json_数据[“2”][“b”],但结果是TypeError:字符串索引必须为inegers,而不是stry您仍然需要执行json.loads()
-如果您不想执行额外的步骤,只需将其定义为dict
,然后使用它即可。