python 中关于json的封装和解析
1、json在python中的用法
在Python中我们大多数都是用json来进行数据的编码和解码
- json.dumps() 是将 列表,元祖,字典类型或者由前者组合而成的数据类型的数组编码成json格式的数据,然后存储到文件中
- json.loads() 是将json格式的文件解析
- s_dumps = json.dumps(data_obj, sort_keys=True, indent=4, ensure_ascii=False 其中sort_keys=True表示按键排序,indent=4表示以4个空格缩进,ensure_ascii表示是否以ASCII码编码
list1=[1,2,3,4]
temp=(1,2,3,4)
dic={"name":123}
#json编码
res1=json.dumps(list1)
res2=json.dumps(temp)
res3=json.dumps(dic)
#json解析
rst1=json.loads(res1)
rst2=json.loads(res2)
rst3=json.loads(res3)
#当需要将Python中的对象进行json编码时,需调用对象的__dict__方法
class A():
def __init__(self):
self.name="xx"
self.age=30
a=A()
print(json.dumps(a.__dict__))
'''
dump()的第一个参数是要序列化的对象,第二个参数是打开的文件句柄
注意打开文件时加上以UTF-8编码打开
* 运行此文件之后在统计目录下会有一个data.json文件,打开之后就可以看到json类型的文件应该是怎样定义的
'''
with open("data.json", "w", encoding="UTF-8") as f:
s_dump = json.dump(data_obj, f, ensure_ascii=False)
"""
load:从一个打开的文件句柄加载数据
注意打开文件的编码
"""
with open("data.json", "r", encoding="UTF-8") as f_load:
r_load = json.load(f_load)
print(r_load)
2、当把存储json文件时,希望以中文显示需要加入 ensure_ascii=False这个条件,同时在写入文件时要加入encoding="utf-8"
with open("filename.txt","w",encoding="utf-8") as f:
content=json.dumps(data,ensure_ascii=False)
f.write(content)
f.close()
这样就解决了文件中中文字符的编码问题