import json
简单直接来讲,序列化(json.dumps / json.dump )是指把python的数据对象转换为json格式的字符串(list、dict—> str);反序列化(json.loads / json.load)是指把json格式字符串转换为python数据对象(str—> list、dict)
序列化方法:json.dumps / json.dump
对数据对象进行序列化:json.dumps
如果在序列化时,中文汉字被转换为unicode码,在dumps函数中添加参数ensure_ascii=False即可解决,以上可处理为:print(json.dumps(dict, ensure_ascii=False))
对文件进行序列化:json.dump
分两步走:先序列化数据对象,然后再将序列化后的字符串写入文件中
反序列化方法:json.loads / json.load
对数据对象进行反序列化:json.loads
记住,一定得是json格式的字符串才能够进行 json.loads 操作
注意:这里我遇到过两个错误
1)json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
2) SyntaxError: invalid syntax:报这个错之后,我就试图把大括号外面的双引导改成单引号,结果就正常了
对文件进行反序列化:json.load
同样分两步走:先读取文件的字符串对象,然后反序列化成python数据对象
对文件的序列化或者反序列化操作,一定要注意!!!dump/load方法里面一定要写open(),而不是写变量名!!!!!!就比如上图对文件反序列化的操作,我改成下图这样:
会报错:json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我也不知道为什么,明明open('D:\\Daydayup\\2.txt', 'r')就是赋值给file的,不过就先这样记住吧
TIP:使用simplejson可以查看具体的报错信息:a = simplejson.loads(data)
参考链接:https://www.pudn.com/news/6228d7dc9ddf223e1ad21f5a.html