zoukankan      html  css  js  c++  java
  • 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

         

    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    SpringMVC源码阅读-通过画图理解初始化(十一)
    通过Stratus 服务器在Flash Player中使用RTMFP 开发P2P应用
    Lucene 学习资料
    LIRe 源代码分析 3:基本接口(ImageSearcher)
    LIRe 源代码分析 2:基本接口(DocumentBuilder)
    LIRe 源代码分析 1:整体结构
    Media Player Classic
    ffdshow 源代码分析 5: 位图覆盖滤镜(总结)
    ITU-T Technical Paper: 测量QoS的基本网络模型
    ITU-T Technical Paper: QoS 测量 (目标,方法,协议)
  • 原文地址:https://www.cnblogs.com/dc2019/p/13246221.html
Copyright © 2011-2022 走看看