【问题标题】:When working with json why use json.loads?使用 json 时为什么要使用 json.loads?
【发布时间】:2022-11-02 17:26:36
【问题描述】:

这不是我遇到的错误,但我想知道以下原因:

例如在tutorial 页面中,我们有

json_string = """
{
    "researcher": {
        "name": "Ford Prefect",
        "species": "Betelgeusian",
        "relatives": [
            {
                "name": "Zaphod Beeblebrox",
                "species": "Betelgeusian"
            }
        ]
    }
}
"""
data = json.loads(json_string)

没关系,但我的问题是为什么所有的麻烦都把 json 作为字符串然后调用 json.loads 时可以通过以下方式获得相同的东西

otro={
    "researcher": {
        "name": "Ford Prefect",
        "species": "Betelgeusian",
        "relatives": [
            {
                "name": "Zaphod Beeblebrox",
                "species": "Betelgeusian"
            }
        ]
    }
}

print(type(otro))
print(otro)
print(otro==data) #True

【问题讨论】:

  • @tripleee“那个”是指第二个?
  • 将其作为字符串是 python 如何获取 json 数据的“真实世界”示例,然后您需要将纯文本字符串“加载”为 json 以解释它。
  • 我懂了。我知道了!它是从将其作为字符串读取然后将其作为 json 处理的“替换”!

标签: python json


【解决方案1】:

因为您的第二个示例根本不是 JSON,所以那是 Python。它们有表面上的相似之处,但你只是通过混合它们来混淆自己。

例如,NoneTrueFalse 值在 Python 中有效,但在 JSON 中无效,它们将分别由 nulltruefalse 表示。另一个区别在于 Unicode 字符的表示方式。显然,还有许多 Python 结构根本无法用 JSON 表示。

在实践中使用哪个取决于您的用例。如果您正在练习或测试需要处理实际 JSON 输入的代码,显然将其传递给 JSON,而不是其他东西。您引用的示例显然是试图演示如何使用 Python 中的 JSON 函数,而将示例数据嵌入字符串只是为了使示例自包含,实际上您可能会从文件或网络 API。

【讨论】:

  • 我打算将其保存为 JSON 文件。 “传递它 JSON”是指第一个例子吗?
猜你喜欢
  • 1970-01-01
  • 2012-03-01
  • 2020-07-26
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2015-04-08
  • 1970-01-01
相关资源
最近更新 更多