• Python标准库:JSON


    JSON(JavaScript Object Notation)是一种由道格拉斯·克罗克福特构想设计、轻量级的资料交换语言,以文字为基础,且易于让人阅读。尽管 JSON 是 Javascript 的一个子集,但 JSON 是独立于语言的文本格式,並且采用了类似于 C 语言家族的一些习惯。

     

    【JSON 建构于两种结构】

    • “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(objec t), 记录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
    • 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

     

    Python 标准库中有 json 模块,主要是执行序列化和反序列化功能:

    • 序列化:encoding,把一个 Python 对象编码转化成 json 字符串
    • 反序列化:decoding,把 json 格式字符串解码转换为 Python 数据对象 

     

    编码encoding: dumps() 

    import json
    
    print(json.__all__)
    
    # 序列化encoding:dumps(),把一个 Python 对象编码转化成 json 字符串
    data = [{"name": "Tony", "lang": ("python", "english"), "age": 40}]
    print(data, type(data))
    data_json = json.dumps(data)
    print(data_json, type(data_json))
    # data和data_json的不同——lang的值从元组编程了列表,
    # 对象类型由 list -> str

    将 Python 对象转化为 json 类型,是按照下表所示对照关系转化的:

    Python JSON
    dict object
    list, tuple array      
    str, unicode string 
    int, long, float number 
    True true
    False false
    None null               

    解码decoding: loads() 

    import json
    
    print(json.__all__)
    
    # 序列化encoding:dumps(),把一个 Python 对象编码转化成 json 字符串
    data = [{"name": "Tony", "lang": ("python", "english"), "age": 40}]
    print(data, type(data))
    data_json = json.dumps(data)
    print(data_json, type(data_json))
    # data和data_json的不同——lang的值从元组编程了列表,
    # 对象类型由 list -> str
    
    # 反序列化decoding:loads(),把 json 格式字符串解码转换为 Python 数据对象
    new_data = json.loads(data_json)
    print(new_data, type(new_data))
    # 解码后对象类型还原成 list;lang的值还是元组,没有还原

    解码的数据类型对应关系:

    JSON Python        
    object dict
    array list
    string unicode
    number(int) int, long
    number(real) float 
    true True 
    false False
    null None

         

    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    linux下通过命令行重启服务,查看id,更改tv密码
    windows渗透相关、hideadmin工具隐藏用户账号、添加隐藏用户
    windows服务隐藏 以及进程隐藏
    nat32 winh命令远程执行难点
    anydesk命令行使用
    html页面,能用鼠标滚轮滑动,但是不能触屏滑动
    Java 全局统一异常捕获
    git 常用操作
    vue v-for强制刷新
    flutter-TextField垂直居中
  • 原文地址:https://www.cnblogs.com/dc2019/p/13246221.html
Copyright © 2020-2023  润新知