• 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'>

    
    

     

  • 相关阅读:
    寒假学习第九天
    寒假学习第八天
    寒假学习第七天
    寒假学习第六天
    寒假学习第五天
    寒假学习第四天
    寒假学习第三天
    寒假学习第二天
    寒假学习第一天
    阅读笔记
  • 原文地址:https://www.cnblogs.com/leiziv5/p/6422920.html
Copyright © 2020-2023  润新知