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('中国'))
"\u4e2d\u56fd"
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))

猜你喜欢

转载自www.cnblogs.com/carey9420/p/12066891.html