• 函数和常用模块【day06】:json模块(十一)


    本节内容

    1、dumps序列化和loads反序列化

    2、dump序列化和load反序列化

    3、序列函数

    1、dumps序列化和loads反序列化

    dumps()序列化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    import  json   #导入json模块
     
    info = {
        'name':"zhangqigao",
        "age":22
    }
     
    with open("test.txt","w") as f:  #以普通模式写入
        data = json.dumps(info) #把内存对象转为字符串
        f.write(data)   #写到文件中
     
    #text.txt文件中的内容
    {"name""zhangqigao""age"22}

    loads()反序列化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import json
     
    with open("test.txt","r") as f:  #以普通模式读
        data = json.loads(f.read())   #用loads反序列化
     
    print(data.get("age"))
     
    #输出
    22

    2、dump序列化和load反序列化

    dump()序列化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import  json
     
    info = {
        'name':"zhangqigao",
        "age":22
    }
     
    with open("test.txt","w") as f:   #文件以写的方式打开
        json.dump(info,f)    #第1个参数是内存的数据对象 ,第2个参数是文件句柄
     
    #text.txt文件中的内容
    {"name""zhangqigao""age"22}

     load()反序列化

    1
    2
    3
    4
    5
    6
    7
    8
    9
    import json
     
    with open("test.txt","r") as f:   #以读的方式打开文件
        data = json.load(f)  #输入文件对象
     
    print(data.get("age"))
     
    #输出
    22

    3、序列化函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    import  json
     
    def sayhi(name):  #函数
        print("name:",name)
     
    info = {
        'name':"zhangqigao",
        "age":22,
        "func":sayhi    #引用sayhi函数名
    }
     
    with open("test.txt","w") as f:
        json.dump(info,f)   #序列化info数据对象
     
    #输出
     File "D:PythonPython35libjsonencoder.py", line 403in _iterencode_dict
        yield from chunks
      File "D:PythonPython35libjsonencoder.py", line 436in _iterencode
        = _default(o)
      File "D:PythonPython35libjsonencoder.py", line 179in default
        raise TypeError(repr(o) + " is not JSON serializable")
    TypeError: <function sayhi at 0x00000000006DD510is not JSON serializable  #不支持jsom序列化

    小结:

    1. dumps和loads是成对使用的,dump和load是成对使用的。
    2. dumps和loads由于序列化的是内容,所以后面要加s,但是dump和load序列化的内容是对象,所以单数。
    3. json只能处理简单的数据类型,例如:字典、列表、字符串等,不能处理函数等复杂的数据类型。
    4. json是所有语言通用的,所有语言都支持json,如果我们需要python跟其他语言进行数据交互,那么就用json格式。
  • 相关阅读:
    ASP.NET Core 2.2 基础知识(二) 中间件
    ASP.NET Core 2.2 基础知识(一) 依赖注入
    初识.NET Core
    volatile 和 Interlocked
    线程池
    MySQL 将某个字段值的记录排在最后,其余记录单独排序
    MySQL 一张表中两个字段值互换
    (转) C#解惑:HashSet<T>类
    利用 ildasm 修改被编译后DLL文件
    shell 字符串判断
  • 原文地址:https://www.cnblogs.com/luoahong/p/7196089.html
Copyright © 2020-2023  润新知