(json是一种特殊的字符串,它是用列表/字典的语法写成的)
a = '1,2,3,4'
# 这是字符串
b = [1,2,3,4]
# 这是列表
c = '[1,2,3,4]'
# 这是字符串,但它是用json格式写的字符串
dumps 将字典数据转换成json字符串
import json
dict1 = {
'Code': 200,
'Count': 657,
'Posts': [
{
'Id': 0,
'PostId': "1123178321664806912",
'RecruitPostId': 49691
},
{
'Id': 0,
'PostId': "1123178321664806912",
'RecruitPostId': 49691
}
]
}
print(type(dict1))
#字典数据转换成json字符串
json_dic = json.dumps(dict1)
print(json_dic)
print(type(json_dic))
#<class 'dict'> {"Code": 200, "Count": 657, "Posts": [{"Id": 0, "PostId": "1123178321664806912", "RecruitPostId": 49691}, {"Id": 0, "PostId": "1123178321664806912", "RecruitPostId": 49691}]} <class 'str'>
loads 将json转换成python可解析的数据即字典
import requests,json
# 引用requests库
res_music = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=65805191174562925&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&w=%E4%BA%94%E6%9C%88%E5%A4%A9&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0')
# 调用get方法,下载这个字典
json_music=json.loads(res_music.text)#此行可换成 json_music = res_music.json()
print(type(json_music))
list_music = json_music['data']['song']['list']
# 一层一层地取字典,获取歌单列表
for music in list_music:
# list_music是一个列表,music是它里面的元素
print(music['name'])
# 以name为键,查找歌曲名
<class 'dict'> 温柔 后来的我们 知足 突然好想你 你不是真正的快乐 拥抱 倔强 离开地球表面 盛夏光年 干杯
dump和dumps的区别:
dump是将对象序列化并保存到文件中
dumps是将对象序列化
#将数据序列化后存储到文件中
import pickle
f = open('test.txt','wb') #pickle只能以二进制格式存储数据到文件
data = {'k1':'python','k2':'java'}
f.write(pickle.dumps(data)) #dumps序列化源数据后写入文件
f.close()
load和loads的区别:
load将序列化字符串从文件读取并反序列化
loads将序列化字符串反序列化
#反序列化读取源数据
import pickle
f = open('test.txt','rb')
da = pickle.loads(f.read()) #使用loads反序列化 或着 da=pickle.load(f)
print(da)