• Python学习之JSON格式的序列化和反序列化


    查看json库的方法

    import  json
    print("JSON库的主要方法:",json.__all__)
    ###JSON库的主要方法: ['dump', 'dumps', 'load', 'loads', 'JSONDecoder', 'JSONDecodeError', 'JSONEncoder']

    dump和dumps的区别 dump是将对象序列化并保存到文件中            dumps是将对象序列化
    load和loads的区别 load将序列化字符串从文件读取并反序列化            loads将序列化字符串反序列化

    Python 字典类型转换为 JSON 对象

    import json
    # Python 字典类型转换为 JSON 对象
    data = {
        'no': 001,
        'name': 'Runoob',
        'url': 'http://www.runoob.com',
        'address':'北京'
    }
    json_str = json.dumps(data)
    json_str1 = json.dumps(data,ensure_ascii=False)
    print("原始数据类型:",type(data))
    print("Python 原始数据:", repr(data))  #repr() 函数将对象转化为供解释器读取的形式。 repr(object) 返回对象的string格式
    print('JSON对象的类型:',type(json_str),type(json_str1))
    print("JSON 对象:", json_str)
    print("JSON对象,,字符编码",json_str1)
    
    '''
    关于中文字符编码的问题
    json.dumps 序列化时对中文默认使用的ascii编码.想输出真正的中文需要指定ensure_ascii=False:
    import json
    print (json.dumps('中国'))
    "u4e2du56fd"
    print (json.dumps('中国',ensure_ascii=False))
    "中国"
    
    '''

    Python 字典类型转换为 JSON 对象 之后再次转换为Python类型

    反序列化,把json格式的字符串解码为python的数据对象,见实现的代码和输出:
    import  json
    dict1={'name':'lucky','age':27,'address':'深圳'}
    print ('原始数据类型为:',type(dict1))
    print ('原始的数据:',dict1)
    #对dict1进行序列化的处理
    str1=json.dumps(dict1,ensure_ascii=False)  #去掉乱码的字符显示
    print ('序列化后的数据类型为:',type(str1))
    print ('序列化后的数据为:',str1,)
    
    #对str1进行反序列化
    dict2=json.loads(str1)
    print ('反序列化后的数据类型:',type(dict2))
    print ('反序列化后的数据:',dict2)
    # Python 字典类型转换为 JSON 对象
    data1 = {
        'no': 001,
        'name': 'Runoob',
        'url': 'http://www.runoob.com',
        'address':'北京'
    }
    json_str = json.dumps(data1,ensure_ascii=False)
    print("Python 原始数据:", repr(data1))
    print("JSON 对象:", json_str)
    
    # 将 JSON 对象转换为 Python 字典
    data2 = json.loads(json_str)
    print("data2的['name']: ", data2['name'])
    print("data2链接['url']: ", data2['url'])
    print(data2 )
    #如果你要处理的是文件而不是字符串,你可以使用json.dump()和json.load()来编码和解码JSON数据。例如:
    import  json
    data = {
        'no': 001,
        'name': 'Runoob',
        'url': 'http://www.runoob.com',
        'address':'北京'
    }
    # 写入 JSON 数据
    with open('data.json', 'w') as f:
        json.dump(data, f)
    
    # 读取数据
    with open('data.json', 'r') as f:
        data = json.load(f)
        print(data)

    结合requests库,来看返回的json数据

    ####结合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))
  • 相关阅读:
    使用EntityFramework之Code First开发与MySql数据库问题一例
    使用Emit创建DBContext对象
    一个实用的Metro滚屏效果示例
    合理使用EntityFramework数据验证的异常错误提示信息
    Metro app中使用内存流压缩和解压
    64位的windows操作系统上运行32位asp.net web应用程序的时候,出现试图加载格式不正确的程序的解决方法
    VSTO中自定义XML功能区实现Ribbon控件互相更新
    基于任务并行库实现多线程下载示例
    Android系统刷机成功后网络信号显示“无服务”修正
    Solution Explorer中显示依赖文件和链接文件
  • 原文地址:https://www.cnblogs.com/carey9420/p/12066891.html
Copyright © 2020-2023  润新知