【问题标题】:How to get dict from json one line dict如何从json单行字典中获取字典
【发布时间】:2019-11-15 19:11:20
【问题描述】:

我有一个带有字典的 json 文件,我想得到那个字典。我尝试了 json.load(),但出现了以下错误消息:'json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)' 我在很多网站上都看到过这种方法。 我的 json 文件看起来像这样:(这只是一个例子,因为我不想显示我的代码)

{"A": 4, "B": 12}

我的 python 看起来像这样:

import json

with open("file.json", "r+") as f:
    d = json.load(f)

你能帮帮我吗? (我使用的是 Python 3.7)

【问题讨论】:

  • 你为什么用load(j)而不是load(f)
  • 哦,我刚刚复制了那一行,抱歉

标签: python json python-3.x dictionary


【解决方案1】:

检查您的行尾。 它们必须是 LF(以 \n 结尾)。这有时可能会导致问题。

【讨论】:

  • 在 json 中?我也在很多网站上看到过,但我认为我也可以这样做。
  • 您可以将您的 json 复制并粘贴到在线提供的众多 json 验证器网站之一,以确保您使用的 json 有效。然后确保根据您的操作系统使用正确的行尾保存它们。
【解决方案2】:

你需要在值周围加上引号,所以不要用

{"A": 4, "B": 12}

应该是

{"A": "4", "B": "12"}

【讨论】:

  • JSON 对象中的数字不需要加引号。如果是,则将它们视为字符串而不是数字。
  • 这实际上是有效的 JSON。来自json.orgA value can be a string in double quotes, or a number, or true or false or null, or an object or an array.
  • @rockethazmat 谢谢我不知道这个!每天都学点新东西哈哈。我在下面看到你的回答,这是有道理的,感谢您纠正我!
【解决方案3】:

您正在将文件读入f 并尝试加载j(甚至没有指定)

试试下面的代码:

with open("test.json", "r+") as j:
    d = json.load(j)

print(d)
{'A': 4, 'B': 12}

【讨论】:

  • 是的,抱歉,我刚刚修复了这个问题(我从我的代码中复制了一行)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
相关资源
最近更新 更多