json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (ch

简介: json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (ch

运行环境,报错信息和查找到的错误内容:

Linux系统,Python3


写法是遍历文件每一行字符串,用 json.loads() 将该行字符串转为json格式(dict object)。该文件为utf-8编码,本来每行都是用单引号来扩起字符串组成的dict object直接转换为str格式然后通过 write() 方法写入到文件的。


从 json.loads() 往后,报错信息为:

Traceback (most recent call last):
前略
  File "an_example.py", line 68, in _read_json
    data = json.loads(line)
  File "my_virtualenv_path/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "my_virtualenv_path/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "my_virtualenv_path/lib/python3.7/json/decoder.py", line 353, in raw_decode
    obj, end = self.scan_once(s, idx)
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)


参考这2篇博文:pythonBUG锦集:json.decoder.JSONDecodeError: Expecting property name enclosed in double quo错误_零度的博客-CSDN博客 Python 报错 json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes_Promising丶的博客-CSDN博客

我发现问题在于我用的是单引号,应该用双引号的,json.loads()要求键必须由双引号包裹。也就是说核心解决方案是用双引号而不是单引号。


解决方案:

事前的解决方案:

在把dict object存储到文件中的过程中,我本来是用的单引号。可以使用 json.dumps(d,ensure_ascii=False) (d 是dict object)将object直接转换为json可读的str object,也就是双引号。ensure_ascii=False 是为了保持文件对人的可读性。我本来直接用的是 str(d),就会直接以单引号的形式输入文件(就算d是用双引号表示的也会)。


事后的解决方案:

  1. 使用eval()
  2. 将原文本中的单引号批量修改为双引号


相关文章
|
3天前
|
JSON 数据格式
Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题处理
【5月更文挑战第14天】Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题处理
19 0
|
5天前
|
JSON JavaScript API
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 错误分析
本文探讨了Python中处理JSON数据时遇到的`JSONDecodeError`,该错误通常由JSON格式错误或数据源问题引起。解决方法包括检查数据源、使用异常处理机制和调试日志记录。示例代码展示了如何从文件和API读取JSON并处理异常。注意事项涉及验证JSON规范、处理特殊字符和选择合适解析器。通过这些步骤,可以有效解决JSON解码错误,确保数据正确解析。
38 0
|
5天前
|
JSON PHP 数据格式
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
php对‘[{“id“:“1“,“name“:“cyg”},{“id“:“2“,“name“:“liwen“}]json数据进行修改删除操作
|
7月前
|
JSON Kubernetes 数据格式
error parsing deployment-nginx.yml: error converting YAML to JSON: yaml: line 19 问题解决
error parsing deployment-nginx.yml: error converting YAML to JSON: yaml: line 19 问题解决
190 0
app.json 文件内容错误] app.json: [“usingComp<van-icon name=“https://b.yzcdn.cn/vant/icon-demo-1126.png“ />
app.json 文件内容错误] app.json: [“usingComp<van-icon name=“https://b.yzcdn.cn/vant/icon-demo-1126.png“ />
|
Java
java基本数据类型, byte: short: int: long: float: double: float和double有什么区别 boolean: ch
java基本数据类型, byte: short: int: long: float: double: float和double有什么区别 boolean: ch
196 0
|
5天前
|
JSON 前端开发 Java
Json格式数据解析
Json格式数据解析
|
3天前
|
JSON NoSQL MongoDB
实时计算 Flink版产品使用合集之要将收集到的 MongoDB 数据映射成 JSON 对象而非按字段分割,该怎么操作
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
31 1
|
5天前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
16 1
|
5天前
|
XML JSON API
转Android上基于JSON的数据交互应用
转Android上基于JSON的数据交互应用
11 1

热门文章

最新文章

http://www.vxiaotou.com