Python 接口測試(四)


五:python數列化和反序列化

python的對象編碼轉換為json格式的字符串,反序列化可以理解為:把json格式

字符串解碼為python數據對象。在python的標准庫中,專門提供了json

導入,查看json庫的主要方法

import  json
print(json.__all__)

見json庫的主要方法:

['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONEncoder']

定義一個字典,通過json把它序列化為json格式的字符串,見實現的代碼

import  json

dict1={'name':'leizi','age':24,'address':'北京'}

print (u'未序列化前的數據類型為:',type(dict1))
print (u'未序列化前的數據:',dict1)
#對dict1進行序列化的處理
str1=json.dumps(dict1)
print (u'序列化后的數據類型為:',type(str1))
print (u'序列化后的數據為:',str1)

結果

未序列化前的數據類型為: <class 'dict'>
未序列化前的數據: {'age': 24, 'name': 'leizi', 'address': '北京'}
序列化后的數據類型為: <class 'str'>
序列化后的數據為: {"age": 24, "name": "leizi", "address": "\u5317\u4eac"}

我們再反序列化,把json格式的字符串解碼為python的數據對象,見實現的代碼和輸出:

import  json

dict1={'name':'雷子','age':24,'address':'北京'}

print (u'未序列化前的數據類型為:',type(dict1))
print (u'未序列化前的數據:',dict1)
#對dict1進行序列化的處理
str1=json.dumps(dict1)
print (u'序列化后的數據類型為:',type(str1))
print (u'序列化后的數據為:',str1)
#對str1進行反序列化
dict2=json.loads(str1)
print (u'反序列化后的數據類型:',type(dict2))
print (u'反序列化后的數據:',dict2)

輸出

未序列化前的數據類型為: <class 'dict'>

未序列化前的數據: {'age': 24, 'name': '雷子', 'address': '北京'}

序列化后的數據類型為: <class 'str'>

序列化后的數據為: {"age": 24, "name": "\u96f7\u5b50", "address": "\u5317\u4eac"}

反序列化后的數據類型: <class 'dict'>

反序列化后的數據: {'age': 24, 'name': '雷子', 'address': '北京'}

結合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))

結果:

 

{"desc":"OK","status":1000,"data":{"wendu":"4","ganmao":"將有一次強降溫過程,且風力較強,極易發生感冒,請特別注意增加衣服保暖防寒。","forecast":[{"fengxiang":"北風","fengli":"4-5級","high":"高溫 6℃","type":"多雲","low":"低溫 -2℃","date":"20日星期一"},{"fengxiang":"南風","fengli":"微風級","high":"高溫 1℃","type":"小雪","low":"低溫 -3℃","date":"21日星期二"},{"fengxiang":"北風","fengli":"3-4級","high":"高溫 8℃","type":"","low":"低溫 -2℃","date":"22日星期三"},{"fengxiang":"南風","fengli":"微風級","high":"高溫 8℃","type":"","low":"低溫 -2℃","date":"23日星期四"},{"fengxiang":"北風","fengli":"微風級","high":"高溫 10℃","type":"","low":"低溫 -2℃","date":"24日星期五"}],"yesterday":{"fl":"4-5級","fx":"北風","high":"高溫 15℃","type":"多雲","low":"低溫 -2℃","date":"19日星期日"},"aqi":"37","city":"北京"}} 數據類型: <class 'str'>{'status': 1000, 'data': {'city': '北京', 'yesterday': {'fx': '北風', 'type': '多雲', 'date': '19日星期日', 'fl': '4-5級', 'high': '高溫 15℃', 'low': '低溫 -2℃'}, 'forecast': [{'fengxiang': '北風', 'low': '低溫 -2℃', 'fengli': '4-5級', 'date': '20日星期一', 'high': '高溫 6℃
 
         

', 'type': '多雲'}, {'fengxiang': '南風', 'low': '低溫 -3℃', 'fengli': '微風級', 'date': '21日星期二', 'high': '高溫 1℃', 'type': '小雪'}, {'fengxiang': '北風', 'low': '低溫 -2℃', 'fengli': '3-4級', 'date': '22日星期三', 'high': '高溫 8℃', 'type': '陰'}, {'fengxiang': '南風', 'low': '低溫 -2℃', 'fengli': '微風級', 'date': '23日星期四', 'high': '高溫 8℃', 'type': '晴'}, {'fengxiang': '北風', 'low': '低溫 -2℃', 'fengli': '微風級', 'date': '24日星期五', 'high': '高溫 10℃', 'type': '晴'}], 'ganmao': '將有一次強降溫過程,且風力較強,極易發生感冒,請特別注意增加衣服保暖防寒。', 'wendu': '4', 'aqi': '37'}, 'desc': 'OK'} 數據類型: <class 'dict'>

 
        

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM