0

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

2 回答 2

0

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

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

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

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

于 2013-02-26T20:14:23.957 回答
0

您的代码不起作用,因为您试图将 Python 字典传递给不存在的json.decode()函数。下面通过手动转换json_data为字符串并将其直接传递给json.loads()null遇到的 s 转换为Nones 来解决这些问题。

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
于 2013-02-26T20:31:30.180 回答