Python学习之JSON格式的序列化和反序列化
Posted lucky8492
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之JSON格式的序列化和反序列化相关的知识,希望对你有一定的参考价值。
查看json库的方法
import json print("JSON库的主要方法:",json.__all__) ###JSON库的主要方法: [‘dump‘, ‘dumps‘, ‘load‘, ‘loads‘, ‘JSONDecoder‘, ‘JSONDecodeError‘, ‘JSONEncoder‘]
dump和dumps的区别 dump是将对象序列化并保存到文件中 dumps是将对象序列化
load和loads的区别 load将序列化字符串从文件读取并反序列化 loads将序列化字符串反序列化
Python 字典类型转换为 JSON 对象
import json # Python 字典类型转换为 JSON 对象 data = { ‘no‘: 001, ‘name‘: ‘Runoob‘, ‘url‘: ‘http://www.runoob.com‘, ‘address‘:‘北京‘ } json_str = json.dumps(data) json_str1 = json.dumps(data,ensure_ascii=False) print("原始数据类型:",type(data)) print("Python 原始数据:", repr(data)) #repr() 函数将对象转化为供解释器读取的形式。 repr(object) 返回对象的string格式 print(‘JSON对象的类型:‘,type(json_str),type(json_str1)) print("JSON 对象:", json_str) print("JSON对象,,字符编码",json_str1) ‘‘‘ 关于中文字符编码的问题 json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False: import json print (json.dumps(‘中国‘)) "u4e2du56fd" print (json.dumps(‘中国‘,ensure_ascii=False)) "中国" ‘‘‘
Python 字典类型转换为 JSON 对象 之后再次转换为Python类型
反序列化,把json格式的字符串解码为python的数据对象,见实现的代码和输出: import json dict1={‘name‘:‘lucky‘,‘age‘:27,‘address‘:‘深圳‘} print (‘原始数据类型为:‘,type(dict1)) print (‘原始的数据:‘,dict1) #对dict1进行序列化的处理 str1=json.dumps(dict1,ensure_ascii=False) #去掉乱码的字符显示 print (‘序列化后的数据类型为:‘,type(str1)) print (‘序列化后的数据为:‘,str1,) #对str1进行反序列化 dict2=json.loads(str1) print (‘反序列化后的数据类型:‘,type(dict2)) print (‘反序列化后的数据:‘,dict2)
# Python 字典类型转换为 JSON 对象 data1 = { ‘no‘: 001, ‘name‘: ‘Runoob‘, ‘url‘: ‘http://www.runoob.com‘, ‘address‘:‘北京‘ } json_str = json.dumps(data1,ensure_ascii=False) print("Python 原始数据:", repr(data1)) print("JSON 对象:", json_str) # 将 JSON 对象转换为 Python 字典 data2 = json.loads(json_str) print("data2的[‘name‘]: ", data2[‘name‘]) print("data2链接[‘url‘]: ", data2[‘url‘]) print(data2 )
#如果你要处理的是文件而不是字符串,你可以使用json.dump()和json.load()来编码和解码JSON数据。例如: import json data = { ‘no‘: 001, ‘name‘: ‘Runoob‘, ‘url‘: ‘http://www.runoob.com‘, ‘address‘:‘北京‘ } # 写入 JSON 数据 with open(‘data.json‘, ‘w‘) as f: json.dump(data, f) # 读取数据 with open(‘data.json‘, ‘r‘) as f: data = json.load(f) print(data)
结合requests库,来看返回的json数据
####结合requests库,来看返回的json数据,具体代码为: import json,requests r=requests.get(‘http://wthrcdn.etouch.cn/weather_mini?city=深圳‘) print (r.text,u‘数据类型:‘,type(r.text)) #对数据进行反序列化的操作 dic=json.loads(r.text) print (dic,u‘数据类型:‘,type(dic))
以上是关于Python学习之JSON格式的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章
Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader(示例代