Python:Expecting property name enclosed in double quotes: line 1 column 2 (char 1)问题解决

Coral ·
更新时间:2024-11-13
· 530 次阅读

今天在处理 JSON 数据的时候遇到了一个意想不到的问题,不过也算是个小问题吧,记录一下解决方案,同时提醒自己下次不要犯同样的错误了。

目录

一、json

(一)json.loads

(二)json.dumps

二、问题

三、解决方法

一、json

使用 Python 处理 JSON 数据还是非常简单的,常用的命令有两个:

json.loads:用于解码 JSON 数据。该函数返回 Python 字段的数据类型 json.dumps:用于将 Python 对象编码成 JSON 字符串 (一)json.loads

用于解码 JSON 数据。该函数返回 Python 字段的数据类型,最常使用的代码如下:

import json jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}' data = json.loads(jsonData) print(type(data)) print(data)

运行结果:


{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} 

简单来说,就是把一段 JSON 字符串解析为 Pythondict 

(二)json.dumps

用于将 Python 对象编码成 JSON 字符串,最常使用的代码如下:

import json data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} jsonData = json.dumps(data) print(type(jsonData)) print(jsonData)

运行结果:


{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}

简单来说,就是把一段 Pythondict 解析为 JSON 字符串 。 

这里,我们可以使用参数让 JSON 数据格式化输出,修改的代码如下:

jsonData = json.dumps(data, sort_keys=True, indent=4, separators=(',', ': '))

运行结果:


{
    "a": 1,
    "b": 2,
    "c": 3,
    "d": 4,
    "e": 5
}

二、问题

Expecting property name enclosed in double quotes: line 1 column 2 (char 1)”翻译为“要求属性名用双引号括起来:第1行第2列(字符1)”。这个问题的出现是因为在把一段 Pythondict 解析为 JSON 字符串时,没有使用上述的 json.dumps 方法,而是使用 str 方法强制将其解析为 JSON 字符串,代码如下:

data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} jsonData = str(data) print(type(jsonData)) print(jsonData)

运行结果:


{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

可以看到这种运行方式与使用 json.dumps 方法的运行结果十分相似,但是当我们重新将该输出结果 jsonData 解析为 Pythondict 时,问题就出现了,代码如下:

import json data = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5} jsonData = str(data) text = json.loads(jsonData) print(type(text)) print(text)

运行结果:

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

三、解决方法

demjson Python 的第三方模块库,可用于编码和解码JSON 数据,包含了 JSONLint 的格式化及校验功能,可以有效处理上述问题。

常用的命令有两个:

demjson.encode:将 Python 对象编码成 JSON 字符串 demjson.decode:将已编码的 JSON 字符串解码为 Python 对象

具体使用方法与 json.loadsjson.dumps 相似,就不过多阐述了。


作者:Ambitioner_c



quotes ENCLOSED DOUBLE line column char Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号