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

  • 相关阅读:
    c++语言 运算符重载 使用重载运算符实现类的加法运算
    c++语言 类模板的使用 类模板的实现
    C++语言 通过类模板实现加法计算器
    C++语言 对动物的行为实现多态
    c++语言 友元类和友元方法 将普通函数声明为友元函数
    C++语言 通过构造函数初始化学生信息
    c++语言 静态成员数据和静态方法
    欧拉回路心得
    POJ2965 The Pilots Brothers' refrigerator(枚举)
    HDU1269 迷宫城堡(有向图的强连通分量(scc))
  • 原文地址:https://www.cnblogs.com/mygodswangzi/p/11904564.html
Copyright © 2011-2022 走看看