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. 将原文本中的单引号批量修改为双引号


相关文章
|
JSON 数据格式
Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题如何处理
【6月更文挑战第15天】Uncaught SyntaxError: JSON.parse: expected property name or '}' at line 1 column 14 of the JSON data问题如何处理
1151 5
|
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问题处理
871 0
|
JSON Java 数据格式
JSON parse error: Unexpected character (‘t‘ (code 116)): was expecting double-quote to start field n
JSON parse error: Unexpected character (‘t‘ (code 116)): was expecting double-quote to start field n
|
JSON JavaScript API
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 错误分析
本文探讨了Python中处理JSON数据时遇到的`JSONDecodeError`,该错误通常由JSON格式错误或数据源问题引起。解决方法包括检查数据源、使用异常处理机制和调试日志记录。示例代码展示了如何从文件和API读取JSON并处理异常。注意事项涉及验证JSON规范、处理特殊字符和选择合适解析器。通过这些步骤,可以有效解决JSON解码错误,确保数据正确解析。
4250 0
|
机器学习/深度学习 JSON 监控
淘宝拍立淘按图搜索与商品详情API的JSON数据返回详解
通过调用taobao.item.get接口,获取商品标题、价格、销量、SKU、图片、属性、促销信息等全量数据。
|
11月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API系列,json数据返回
淘宝拍立淘按图搜索API系列通过图像识别技术实现商品搜索功能,调用后返回的JSON数据包含商品标题、图片链接、价格、销量、相似度评分等核心字段,支持分页和详细商品信息展示。以下是该API接口返回的JSON数据示例及详细解析:
|
11月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
12月前
|
JSON 缓存 自然语言处理
多语言实时数据微店商品详情API:技术实现与JSON数据解析指南
通过以上技术实现与解析指南,开发者可高效构建支持多语言的实时商品详情系统,满足全球化电商场景需求。
|
11月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
JSON API 数据格式
干货满满!淘宝商品详情数据,淘宝API(json数据返回)
淘宝商品详情 API 接口(如 taobao.item.get)的 JSON 数据返回示例如下

推荐镜像

更多