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格式的序列化和反序列化的主要内容,如果未能解决你的问题,请参考以下文章

python学习之-常用模块

24 Java学习之对象序列化和反序列化

Zookeeper学习之Jute序列化以及通信协议详解

Newtonsoft.Json序列化和反序列之javascriptConvert.SerializeObject,DeserializeObject,JsonWriter,JsonReader(示例代

picklejson,configparser,hashlib模块

Python之序列化和反序列化