【问题标题】:json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 2 column 2 (char 3)json.decoder.JSONDecodeError:期望用双引号括起来的属性名称:第 2 行第 2 列(字符 3)
【发布时间】:2021-05-28 22:13:39
【问题描述】:

我知道这个问题已经回答了,但我不知道我的案例中的错误在哪里。

这是我的代码:

import json

json_data = """
{
    'position1': '516, 440',
    'position2': '971, 443',
    'position3': '1186, 439',
    'position4': '1402, 441',
    'position5': '1630, 449',
    'position6': '299, 681',
    'position7': '518, 684',
    'position8': '736, 691',
    'position9': '739, 431'
}
"""
data = json.loads(json_data)
print(data)

我不太喜欢处理 json 文件,所以如果这是一个真正的转储错误,请不要怪我。

【问题讨论】:

  • 错误信息看起来很清楚 - 你不明白什么?
  • '516, 440',问题是数字中间的逗号被解释为与键:值对末尾的逗号相同,因此您需要使用双引号如果你想在你的值中使用逗号而不是单引号

标签: python json


【解决方案1】:

不要使用三引号"""。而是使用带有json.dumps() 的字典,这样您的值中的逗号不会被误解为项目之间的逗号。

import json

json_data = {
    'position1': '516, 440',
    'position2': '971, 443',
    'position3': '1186, 439',
    'position4': '1402, 441',
    'position5': '1630, 449',
    'position6': '299, 681',
    'position7': '518, 684',
    'position8': '736, 691',
    'position9': '739, 431'
}

data = json.dumps(json_data)
print(data)

【讨论】:

  • 成功了!谢谢!
【解决方案2】:

如果你使用三引号,这会起作用

json_data = json_data.replace("'", '"')

data = json.loads(json_data)
print(data)

【讨论】:

  • 我一直在使用它并且工作正常,直到我有一个包含'的值
【解决方案3】:

试试这个

import json

json_data = {
    'position1': '516, 440',
    'position2': '971, 443',
    'position3': '1186, 439',
    'position4': '1402, 441',
    'position5': '1630, 449',
    'position6': '299, 681',
    'position7': '518, 684',
    'position8': '736, 691',
    'position9': '739, 431'
}

data = json.dumps(json_data)
print(data)

【讨论】:

  • 这与我的答案完全相同。
猜你喜欢
  • 1970-01-01
  • 2018-10-30
  • 2021-04-12
  • 1970-01-01
  • 2022-12-14
  • 1970-01-01
  • 2019-01-04
  • 2021-12-31
  • 1970-01-01
相关资源
最近更新 更多