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

         

    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/dc2019/p/13246221.html
Copyright © 2011-2022 走看看