问题

python解析json时,可以用json.loads(str)来处理,但是如果json的key或者value是单引号包围,则json.loads就会报错,解决方法如下

方法一

将单引号替换为双引号

s = "'key':'value'"
s = s.replace('\'','\"')
js = json.loads(json.dumps(eval(s)))

方法二

js = json.loads(json.dumps(eval(s)))

解析:
eval函数是一个很智能的函数,可以将字符串中内容包含的类型转换成那个类型,比如:

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))
b = eval(a)
print(type(b))    # list
print(b)		  #[[1,2], [3,4], [5,6], [7,8], [9,0]]

a是一个字符串,但是字符串里是一个list,eval之后就变成了一个list,同理,dict、json、tuple等结构可以用此类方法。

因此,在这里,eval是先将字符串转化为字典对象,然后json.dumps是将字典对象转换为json对象,json.loads又将json对象变为字典对象,所以其实可以直接eval(s)即可。

参考:https://blog.csdn.net/cc695906217/article/details/84238727

GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐