Python序列化之Json基礎
阿新 • • 發佈:2017-06-27
發生 end print 對象 cdn touch 不能 sta date
python的序列化就是將python的基本對象轉換為字符串的過程,反之則是反序列化。
序列化類型:
-> import json
import pickle
序列化定義:
序列化:對象、列表、字典都是python的基本數據類型,序列化其實就是把這些數據類型轉換為字符串。
反序列化:將序列化後得到的字符串轉反序列化成python的數據對象、列表、字典等類型
json的作用:
在python的基本數據類型與字符串之間進行相互轉換的作用
json.dumps()函數:
將python基本數據類型轉換成字符串類型,稱為序列化
json.loads()函數:
將字符串形式轉換成python的基本數據類型,稱為反序列化
json.loads()條件:
雖然loads函數可以將字符串發序列化成python基本數據類型,但是字符串必須是
正規的python基本數據類型,不能是類似{"k1":123]這樣,既不是字典,又不是列表。
requests.get(‘URL‘)
獲取URL指定的資源,http://wthrcdn.etouch.cn/weather_mini?city=上海 獲取上海天氣的API
代碼部分:
import json # 做序列化和反序列化需要用到json模塊 import requests #請求URL資源,需要用到requests模塊 print(‘\n‘,‘序列化‘.center(40,‘-‘)) dic = {‘k1‘:‘v1‘} print(dic,type(dic)) # 輸出結果:{‘k1‘: ‘v1‘} <class ‘dict‘> # json.dumps(python數據類型)就可以把數據類型轉換為字符串,這個過程就是序列化 result = json.dumps(dic) print(result,type(result)) # 輸出結果:{"k1": "v1"} <class ‘str‘> print(‘\n‘,‘反序列化‘.center(40,‘-‘)) #json.loads(字符串)就可以把字符串轉換成python的基本數據類型,這個過程就是反序列號 s1 = ‘{"k1":123}‘ # s1雖然看起來像字典,但它是一個字符串 dic = json.loads(s1) print(dic,type(dic)) # 輸出結果: {‘k1‘: 123} <class ‘dict‘> print(‘\n‘,‘基於天氣API獲取python的json數據‘.center(40,‘-‘)) response= requests.get(‘http://wthrcdn.etouch.cn/weather_mini?city=上海‘) response.encoding = ‘utf-8‘ print(response.text,type(response.text)) # 獲取到的結果是字符串類型 # 輸出結果: {"data":{"yesterday":{"date":"26日星期一"... <class ‘str‘> # 通過json.loads()函數將字符串結果轉換為字典類型,轉換成字典後對字典內對數據進行操作就方便的多了。 dic = json.loads(response.text) print(dic,type(dic)) # json.loads()轉換後的結果為python的基本數據類型,這裏就是字典。 # 輸出結果: {‘data‘: {‘yesterday‘: {‘date‘: ‘26日星期一... <class ‘dict‘>
執行結果:
------------------序列化------------------- {‘k1‘: ‘v1‘} <class ‘dict‘> {"k1": "v1"} <class ‘str‘> ------------------反序列化------------------ {‘k1‘: 123} <class ‘dict‘> ---------基於天氣API獲取python的json數據--------- {"data":{"yesterday":{"date":"26日星期一","high":"高溫 28℃","fx":"西風","low":"低溫 23℃","fl":"微風","type":"雷陣雨"},"city":"上海","aqi":"107","forecast":[{"date":"27日星期二","high":"高溫 29℃","fengli":"微風級","low":"低溫 23℃","fengxiang":"西風","type":"雷陣雨"},{"date":"28日星期三","high":"高溫 28℃","fengli":"微風級","low":"低溫 23℃","fengxiang":"東南風","type":"小雨"},{"date":"29日星期四","high":"高溫 27℃","fengli":"微風級","low":"低溫 24℃","fengxiang":"東南風","type":"中雨"},{"date":"30日星期五","high":"高溫 32℃","fengli":"微風級","low":"低溫 26℃","fengxiang":"東南風","type":"多雲"},{"date":"1日星期六","high":"高溫 32℃","fengli":"4-5級","low":"低溫 26℃","fengxiang":"東南風","type":"多雲"}],"ganmao":"各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。","wendu":"24"},"status":1000,"desc":"OK"} <class ‘str‘> {‘data‘: {‘yesterday‘: {‘date‘: ‘26日星期一‘, ‘high‘: ‘高溫 28℃‘, ‘fx‘: ‘西風‘, ‘low‘: ‘低溫 23℃‘, ‘fl‘: ‘微風‘, ‘type‘: ‘雷陣雨‘}, ‘city‘: ‘上海‘, ‘aqi‘: ‘107‘, ‘forecast‘: [{‘date‘: ‘27日星期二‘, ‘high‘: ‘高溫 29℃‘, ‘fengli‘: ‘微風級‘, ‘low‘: ‘低溫 23℃‘, ‘fengxiang‘: ‘西風‘, ‘type‘: ‘雷陣雨‘}, {‘date‘: ‘28日星期三‘, ‘high‘: ‘高溫 28℃‘, ‘fengli‘: ‘微風級‘, ‘low‘: ‘低溫 23℃‘, ‘fengxiang‘: ‘東南風‘, ‘type‘: ‘小雨‘}, {‘date‘: ‘29日星期四‘, ‘high‘: ‘高溫 27℃‘, ‘fengli‘: ‘微風級‘, ‘low‘: ‘低溫 24℃‘, ‘fengxiang‘: ‘東南風‘, ‘type‘: ‘中雨‘}, {‘date‘: ‘30日星期五‘, ‘high‘: ‘高溫 32℃‘, ‘fengli‘: ‘微風級‘, ‘low‘: ‘低溫 26℃‘, ‘fengxiang‘: ‘東南風‘, ‘type‘: ‘多雲‘}, {‘date‘: ‘1日星期六‘, ‘high‘: ‘高溫 32℃‘, ‘fengli‘: ‘4-5級‘, ‘low‘: ‘低溫 26℃‘, ‘fengxiang‘: ‘東南風‘, ‘type‘: ‘多雲‘}], ‘ganmao‘: ‘各項氣象條件適宜,無明顯降溫過程,發生感冒機率較低。‘, ‘wendu‘: ‘24‘}, ‘status‘: 1000, ‘desc‘: ‘OK‘} <class ‘dict‘>
Python序列化之Json基礎