zoukankan      html  css  js  c++  java
  • 序列化模块

    把对象(变量)从内存中变成可存储或传输的过程称为序列化

    1.json模块

      如果要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,如果有序列化为JSON表示出来的就是一个字符串,可以被所有语言读取,也可以方便的存储到磁盘或者通过网络传输

    JSON和Python内置的数据类型对应如下:

    JSON类型 Python类型
    {} dict
    [] list
    "string" str
    123.45 int或float
    True/False True/False
    null None
     1 import json
     2 dic = {"name":"abc","age":18}
     3 print(type(dic))#<class 'dict'>
     4 
     5 j = json.dumps(dic)
     6 print(type(j))#<class 'str'>
     7 
     8 f = open("序列化对象",'w')
     9 f.write(j)#等价于json.dump(dic,f)
    10 f.close()
    11 
    12 #反序列化
    13 f = open("序列化对象")
    14 data = json.loads(f.read())#等价于data = json.load(f)

      1.

    1 import json
    2 dic = {1:"value1",2:"value2"}
    3 ret = json.dumps(dic)
    4 res = json.loads(ret)
    5 print(dic,type(dic))#{1:'value1',2:'value2'}<class 'dict'>
    6 print(ret,type(ret))#{"1":"value1","2":"value2"}<class 'str'>
    7 print(res,type(res))#{'1':'value1','2':'value2'}<class 'dict'>

      2.

    1 import json
    2 dic = {1 : [1,2,3],2 : (4,5,'aa')}
    3 ret = json.dumps(dic)
    4 print(dic,type(dic))#{1:[1,2,3],2:(4,5,'aa')}<class 'dict'>
    5 print(ret,type(ret))#{"1":[1,2,3],"2":[4,5,"aa"]}<class 'str'>

    如果字典的值为元组,序列化后会转为列表

      3.

    1 import json
    2 s = {1,2,3}
    3 s1 = json.dumps(s)
    4 print(s1)
    5 #会报错TypeError: Object of type set is not JSON serializable
    6 集合类型不是可序列化的对象

      4.

    1 import json
    2 dic = {(1,2,3):123}
    3 dic1 = json.dumps(dic)
    4 print(dic1)
    会报错

    TypeError: keys must be str, int, float, bool or None, not tuple

    字典的键必须是str,int,float,bool或None,元组不能作为键

      5.

    1 import json
    2 dic = {"key1":"value1","key2":"value2"}
    3 with open("json_file","a") as f:
    4     json.dump(dic,f)
    5     json.dump(dic,f)
    6 
    7 with open("json_file","r") as f:
    8     dic = json.load(f)
    不支持连续的存取

    dumps和loads

      在内存中做数据转换:

        dumps  数据类型转成字符串  #序列化

        loads   字符串转成数据类型  #反序列化

    dump和load

      直接将数据类型写入文件,直接从文件中读出数据类型

        dump  数据类型写入文件  #序列化

        load  从文件读出数据类型  #反序列化

    2.pickle模块

      1.支持在python中几乎所有的数据类型

      2.dumps序列化的结果只能是字节

      3.只能在python中使用

      4.在和文件操作的时候,需要用rb,wb的模式打开文件

      5.可以多次dump和load

     

  • 相关阅读:
    封装好的PHP分页类,简单好用--在开源看到的,取回来自己用
    php网站判断用户是否是手机访问的方法
    三种php连接access数据库方法
    php防止SQL注入详解及防范
    mysql sql语句大全
    java util 中set,List 和Map的使用
    web开发——写一个简单的表格导出操作
    JSP登录页面使用Enter键登录【转】
    PL/SQL 将旧表的一些字段赋值给新的表中的字段的做法
    PL/SQL设置主键自增
  • 原文地址:https://www.cnblogs.com/s593941/p/9520554.html
Copyright © 2011-2022 走看看