Python-JSON和pickle

发布时间:2019-03-16 22:24:09编辑:auto阅读(1758)

    笔记:
    一:简介
    (1)JSON (JavaScript Object Notation) 是一种轻量级(XML重量级)的数据交换格式。
    是为了数据交换而定制的一种规则,它基于ECMAScript的一个子集。

    (2)JSON是一种数据格式!
    字符串是JSON的表现形式。(符合JSON格式的字符串叫做JSON字符串)

    (3)Python3中可以使用 json 模块来对 JSON 数据进行编解码,它包含了两个函数:
    json.dumps(): 对数据进行编码。
    json.loads(): 对数据进行解码。
    (4)JSON的优点是:易阅读、易解析、网络传输效率高、跨语言交换数据

    二:python 编码为JSON类型转换对应表:
    _______________________________________________
    | python | JSON |
    -------------------------------------------------
    | dict | object |
    -------------------------------------------------
    | list,tuple | array |
    -------------------------------------------------
    | str | string |
    -------------------------------------------------
    | int,float,Enums | number |
    -------------------------------------------------
    | True,False,None | true,false,null |
    -------------------------------------------------

    三: 如果你要处理的是文件而不是字符串,可以使用
    json.dump()
    json.load()

    四:用pickle对数据序列化和反序列化
    (1)方法:
    pickle.dump()
    pickle.load()
    pickle.dumps()
    pickle.loads()
    (2)数据类型:
    所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
    由任何原生类型组成的列表,元组,字典和集合。
    函数,类,类的实例

    五:JSON和pickle之间的区别
    JSON序列化和反序列化的目的是将Python数据类型转换为JSON标准类型,
    或者将JSON类型的数据转换为python的数据类型,从而实现不同语言之间的数据交换!
    pickle:在程序运行过程中希望保存一个数据,重用或者发送给其他人,可以采用这方式
    将数据写入文件,支持所有数据类型!
    code:
     1 import json
     2 import pickle
     3 # ----------------------------------------------#
     4 # 反序列化
     5 # ----------------------------------------------#
     6 # object
     7 json_str = '{"name":"qiyue", "age":18}'     # JSON字符串
     8 student = json.loads(json_str)    # JSON对象转换为字典
     9 print(student)
    10 print(json_str)
    11 print(type(student))
    12 
    13 # object
    14 json_str1 = '[{"name":"qiyue", "age":18, "flag":false}, ' \
    15             '{"name":"qiyue", "age":18}]'     # JSON字符串
    16 student1 = json.loads(json_str1)    # JSON对象转换为字典
    17 print(type(student1), student1)
    18 print(student1[0])
    19 
    20 # ----------------------------------------------#
    21 # 序列化
    22 # ----------------------------------------------#
    23 student2 = [
    24                 {"name": "qiyue", "age": 18, "flag": False},
    25                 {"name": "qiyue", "age": 18}
    26            ]
    27 
    28 json_str1 = json.dumps(student2)    # 转换为字符串后可以利用正则表达式处理字符串
    29 print(type(json_str1), json_str1)
    30 
    31 # ----------------------------------------------#
    32 # 处理的是文件
    33 # ----------------------------------------------#
    34 # 将数据写入文件
    35 student3 = [
    36                 {"name": "qiyue", "age": 18, "flag": False},
    37                 {"name": "qiyue", "age": 18}
    38            ]
    39 with open('data.json', 'w') as f:
    40     json.dump(student3, f)
    41 
    42 # 读取数据
    43 with open('data.json', 'r') as f:
    44     data = json.load(f)
    45 
    46 
    47 # dumps(object)将对象序列化
    48 list_a = ["English", "Math", "Chinese"]
    49 list_b = pickle.dumps(list_a)   # 序列化数据
    50 print(list_a)
    51 print(list_b)
    52 
    53 # loads(object)将对象原样恢复,并且对象类型也恢复原来的格式
    54 list_c = pickle.loads(list_b)
    55 print(list_c)
    56 
    57 
    58 # dumps(object,file)将对象序列化后存储到文件中
    59 group1 = ("baidu", "wen", "qingtian")
    60 f1 = open('group.txt', 'wb')
    61 pickle.dump(group1, f1, True)
    62 f1.close()
    63 
    64 # load(object, file)将文件中的信息恢复
    65 f2 = open('group.txt', 'rb')
    66 t = pickle.load(f2)
    67 f2.close()
    68 print(t)
    
    

     

     
     

关键字