• JSON序列和反序列1


    python3 JSON

    1.Python3 使用 json 模块来对 JSON 数据进行编解码。

    a.json.dumps():编码,将 python类型 序列为 json字符串类型。

    b.json.loads():解码,将 json类型 反序列为 python类型。

    c.json.dump() : 编码,操作文件,序列化

    d.json.load() :解码,操作文件,反序列

    2.python类型和json类型之间的序列和反序列

    import json

    #列表list序列化为json
    list = ['a','b','c','d','e']
    data = json.dumps(list)
    print("python:",type(list),list)
    print("json序列:",type(data),data)
    #json反序列为python类型
    cover = json.loads(data)
    print("json反序列后",type(cover),cover)


    #元组序列化为json
    tuple = (1,2,3,4,5,6)
    data1 = json.dumps(tuple)
    print("python:",type(tuple),tuple)
    print("json序列:",type(data1),data1)
    #json反序列为python类型
    cover1 = json.loads(data1)
    print("json反序列后",type(cover1),cover1)

    #字典序列化为json
    dict = {'name':'jack','age':'24','sex':'F'}
    data2 = json.dumps(dict)
    print("python:",type(dict),dict)
    print("json序列:",type(data2),data2)
    #json反序列为python类型
    cover2 = json.loads(data2)
    print("json反序列后",type(cover2),cover2)

    运行结果:

    列表: <class 'list'> ['a', 'b', 'c', 'd', 'e']
    json序列: <class 'str'> ["a", "b", "c", "d", "e"]
    json反序列后 <class 'list'> ['a', 'b', 'c', 'd', 'e']
    元组: <class 'tuple'> (1, 2, 3, 4, 5, 6)
    json序列: <class 'str'> [1, 2, 3, 4, 5, 6]
    json反序列后 <class 'list'> [1, 2, 3, 4, 5, 6]
    字典: <class 'dict'> {'name': 'jack', 'age': '24', 'sex': 'F'}
    json序列: <class 'str'> {"name": "jack", "age": "24", "sex": "F"}
    json反序列后 <class 'dict'> {'name': 'jack', 'age': '24', 'sex': 'F'}

    从运行结果可以看出,python数据类型json序列都是字符串类型

    3.文件操作,实现json的序列和反序列

    序列

    #正常操作

    dict ={'name':'lisi','number':'0102','sex':'M'}

    with open('d:/test.txt','w+') as f1:
        f1.write(dict)
    print("到这里了")

    运行结果:

    TypeError: write() argument must be str, not dict #文件写入必须是字符串,不可以是字典

    #文件操作,使用json

    dict ={'name':'lisi','number':'0102','sex':'M'}
    with open('d:/test.txt','w+') as f:
        json.dump(dict,f)  #文件 序列

    运行结果:成功

    反序列

    with open('d:/test.txt') as f1:
        data = json.load(f1) #文件 反序列
        print(data)

  • 相关阅读:

    k
    通过类名调用类方法
    类Area的getArea方法是一个重载方法
    构造cry
    两个lader对象共享bottom
    向一个方法的基本数据类型参数传值
    Circle
    常量的用法
    显示本机时间
  • 原文地址:https://www.cnblogs.com/mygodswangzi/p/11904564.html
Copyright © 2020-2023  润新知