• 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": "u5317u4eac"}

    我们再反序列化,把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": "u96f7u5b50", "address": "u5317u4eac"}

    反序列化后的数据类型: <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'>

    
    
    复制代码

     

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/yulei126/p/6804223.html
Copyright © 2020-2023  润新知