首页 > 其他分享 >序列化

序列化

时间:2023-12-02 22:35:30浏览次数:27  
标签:dic2 dic dumps json str 序列化

一,序列化

  主要分为通过函数进行序列化与反序列化达到传输数据的效果。根据情况可分为两种。

  第一种,python与不同语言间进行交流,比如,后端语言,java c c++ c#等,因为需要使用都可以识别的数据类型进行传输,所有便诞生了Json模块。Json模块主要分为四个功能,dumps、dump、loads、load。

 1 #该方法是通过控制内存地址进行序列化与反序列化的。
 2 import json
 3 dic = {'k1':'v1','k2':'v2','k3':'v3'}
 4 str_dic = json.dumps(dic)  #序列化:将一个字典转换成一个字符串
 5 print(type(str_dic),str_dic)  #<class 'str'> {"k3": "v3", "k1": "v1", "k2": "v2"}
 6 #注意,json转换完的字符串类型的字典中的字符串是由""表示的
 7 
 8 dic2 = json.loads(str_dic)  #反序列化:将一个字符串格式的字典转换成一个字典
 9 #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示
10 print(type(dic2),dic2)  #<class 'dict'> {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
11 
12 
13 list_dic = [1,['a','b','c'],3,{'k1':'v1','k2':'v2'}]
14 str_dic = json.dumps(list_dic) #也可以处理嵌套的数据类型 
15 print(type(str_dic),str_dic) #<class 'str'> [1, ["a", "b", "c"], 3, {"k1": "v1", "k2": "v2"}]
16 list_dic2 = json.loads(str_dic)
17 print(type(list_dic2),list_dic2) #<class 'list'> [1, ['a', 'b', 'c'], 3, {'k1': 'v1', 'k2': 'v2'}]
18 loads和dumps
dumps与loads
 1 #该方法是通过控制文件进行序列化与反序列化的
 2 import json
 3 f = open('json_file','w')
 4 dic = {'k1':'v1','k2':'v2','k3':'v3'}
 5 json.dump(dic,f)  #dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件
 6 f.close()
 7 
 8 f = open('json_file')
 9 dic2 = json.load(f)  #load方法接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
10 f.close()
11 print(type(dic2),dic2)
12 
13 load和dump
View Code

注意,

  • load与loads都只能识别带双引号的东西,所以直接在文件上添加需要添加双引号,而不是单引号。
  • load与loads不可以直接识别多个数据类型,比如文件内有两个字典,此时就会报错。所以如果真的需要添加多个字典,此时需要dumps的配合。如下所示
 1 with open('json_file','a') as f:
 2     str_dic = json.dumps(dic)
 3     f.write(str_dic+'\n')
 4     str_dic = json.dumps(dic)
 5     f.write(str_dic + '\n')
 6     str_dic = json.dumps(dic)
 7     f.write(str_dic + '\n')
 8 
 9 with open('json_file','r') as f:
10     for line in f:
11         dic = json.loads(line.strip())
12         print(dic.keys())
多个字典

 

标签:dic2,dic,dumps,json,str,序列化
From: https://www.cnblogs.com/zuishaui/p/17872359.html

相关文章

  • Golang中如何自定义时间类型进行xml、json的序列化/反序列化
    在日常开发工作中,我们进行会遇到将struct序列化json字符串以及将json字符串反序列化为struct的场景,大家也对此十分熟悉。最近工作中,遇到了需要将struct序列化xml字符串以及将xml字符串反序列化为struct的场景,对于普通类型的字段,比如int、string等类型,直接......
  • 使用RabbitMQ时使用MemoryPack序列化和反序列化对象
    [MemoryPackable]publicpartialclassUserEto{publicStringName{get;set;}} 发送端publicclassEventBus:IEventBus{publicvoidPublish(stringexchangeName,objecteventData){usingvarconnection=RabbitMQ......
  • php反序列化
    前置知识各种魔术方法的触发条件:__construct当一个对象创建时被调用,__destruct当一个对象销毁时被调用,当对象创建完成结束后会调用__toString当一个对象被当作一个字符串被调用。__wakeup()使用unserialize时触发__sleep()使用serialize时触发__destruct()对象被销......
  • Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271)
    Weblogic<10.3.6'wls-wsat'XMLDecoder反序列化漏洞(CVE-2017-10271)Weblogic的WLSSecurity组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。环境搭建cdweblogic/CVE-2017-10271docker-compose......
  • C# Json序列化的格式化问题
    问题来源: 客户要求传送给他的JSON文件的float型格式化为2位小数,数值型有30-40个栏位,一个一个修改也不是很好.bing和百度找到的方式都是自己定义一个JsonConverter,进行格式化.找到的都是在字符串两边加++的例子,核心转化的代码如下:classStringFormatConverter:JsonCo......
  • php反序列化
    serialize()函数“所有php里面的值都可以使用函数serialize()来返回一个包含字节流的字符串来表示。序列化一个对象将会保存对象的所有变量,但是不会保存对象的方法,只会保存类的名字。”在程序执行结束时,内存数据便会立即销毁,变量所储存的数据便是内存数据,而文件、数据库是“持久......
  • 【Django进阶】django-rest-framework中文文档——序列化器
    搭建环境使用django-rest-framework中文文档——快速入门中的虚拟环境。新建snippets应用程序python.\manage.pystartappsnippets注册相关应用程序,例如当前应用,rest_framework创建数据库模型编辑snippets/models.py文件fromdjango.dbimportmodelsfrompygments.le......
  • 关于AssetBundle禁用TypeTree之后的一些可序列化的问题
    1)关于AssetBundle禁用TypeTree之后的一些可序列化的问题2)启动Unity导入变动的资源时,SingletonScriptableObject 加载不到3)Xcode15构建Unity2022.3的Xcode工程,报错没有兼容的iPhoneSDK这是第361篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术......
  • springboot 控制序列化反序列化示例(接口返回数据处理/接口接收数据处理)
    1.返回Long转JSONpackagecom.mingx.drone.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.fasterxml.jackson.databind.SerializerProvider;importjava.io.IOException;/***@Descript......
  • Java基础知识回顾5-序列化和反序列化
    一、概念Java序列化是指把Java对象转换为字节序列的过程。Java反序列化是指把字节序列恢复为Java对象的过程。序列化作用:在传递和保存对象时,保存对象的完整性和可传递性,对象转换为字节流,可以站网络上传输或者保存在本地文件中。反序列化作用:根据字节流中保存的对象状态及描述信息......