python基础学习1-json,pickle的序列化和反序列化

import requests
import json
dic={'k1':'v1'}
print(dic,type(dic))
result = json.dumps(dic)#调用dumps方法把字典序列化成一个字符串
print(result,type(result))


s1='{"k1":"123","k2":"456"}'
re = json.loads(s1) #调用 load方法将 字符串反序列化为字典对象
print(re,type(re))

s2 = '[1,2,3,4,{"a":"aaa","b":"bbb"}]'
rr = json.loads(s2)#调用 load方法将 字符串反序列化为列表对象
print(rr,type(rr))


r=requests.get('http://wthrcdn.etouch.cn/weather_mini?city=重庆') #调用地址取得返回值
r.encodeing = 'utf-8'
print(r.text)

dic1 = json.loads(r.text)#反序列化 成个字典 反序列化时 一定要 记住使用 外单内双 引号
print(dic1,type(dic1))
print(dic1["data"]["city"])#取得字典中的 各个值


#--------------json.dump  json.load---------------
li=[1,2,3]
json.dump(li,open("dd","w",encoding='utf-8'))# 两步操作 1步先序列化 列表对象  2步把序列化成的字符串写入文件
li2 =json.load(open("dd","r",encoding='utf-8'))#两步操作 1步先读取文件的字符串对象,然后反序列化成列表对象
print(li2,type(li2))
import pickle
#json更适合跨语言,字符串,基本数据类型的序列化
#pickle,更适用python所有类型的序列化
li=[11,22,33]
r=pickle.dumps(li) #和json相同 序列化对象成字符串 只能python用
print(r,type(r))

rr=pickle.loads(r)#反序列化字符串回对象 只能python用
print(rr,type(rr))

r1=pickle.dump(li,open("dd","wb"))

r2 = pickle.load(open("dd","rb"))
print(r2)