0
点赞
收藏
分享

微信扫一扫

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

山竹山竹px 2022-02-17 阅读 187
jsonpython

诸神缄默不语-个人CSDN博文目录

VX号“PolarisRisingWar”可直接搜索添加作者好友讨论。

报错信息和查找到的错误内容:
写法是遍历文件每一行字符串,用 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)

参考这篇博文:pythonBUG锦集:json.decoder.JSONDecodeError: Expecting property name enclosed in double quo错误_零度的博客-CSDN博客
我发现问题在于我用的是单引号,应该用双引号的。也就是说核心解决方案是用双引号而不是单引号

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

举报

相关推荐

0 条评论