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

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

目录

一、json

(一)json.loads

(二)json.dumps

二、问题

三、解决方法


一、json

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

  1. json.loads:用于解码 JSON 数据。该函数返回 Python 字段的数据类型
  2. 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)

运行结果:

<class 'dict'>
{'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)

运行结果:

<class 'str'>
{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}

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

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

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

运行结果:

<class 'str'>
{
    "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)

运行结果:

<class 'str'>
{'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 的格式化及校验功能,可以有效处理上述问题。

常用的命令有两个

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

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

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值