首页 > 其他分享 >Android开发 - “序列化”与“反序列化”解析

Android开发 - “序列化”与“反序列化”解析

时间:2024-08-29 14:27:15浏览次数:11  
标签:解析 字节 对象 字符串 格式 Android 序列化 数据

简介

  • 序列化反序列化是计算机科学中两个非常常用的概念。简单来说,它们是将数据转换不同形式过程

序列化(Serialization)

  • 序列化是将对象(比如一个 Java 对象或一个 Python 字典)转换成一种可以保存或传输的格式的过程。这种格式通常是字节流或字符串。通过序列化,你可以将一个复杂的数据对象转换为一串字节,这样就可以轻松地将它存储到文件中发送到网络上,或者保存在数据库中

序列化工作原理

  • 比如一个 User 对象(包含名字和年龄等属性),你可以将它序列化成一个 JSON 字符串({"name": "Alice", "age": 30}或者一个字节流

反序列化(Deserialization)

  • 反序列化序列化的逆过程。它将序列化的字节流或字符串转换回原始的对象。换句话说,当收到数据(比如从文件或网络中接收到)时,你需要将这些数据转换回原来的对象,这就是反序列化的过程

反序列化工作原理

  • 将一个 JSON 字符串({"name": "Alice", "age": 30}反序列化回一个 User 对象

序列化和反序列化的好处

  • 数据存储:将对象序列化后,可以将其保存到文件中或者数据库中,这样下次使用时可以直接反序列化回来,不需要重新创建对象

  • 数据传输:当你需要在网络上发送数据(比如通过 HTTP 请求发送数据)数据必须是字符串或字节流的形式。序列化可以将复杂对象转换为可传输的格式,而反序列化可以在另一端数据还原

  • 跨平台和语言兼容序列化格式(比如 JSON、XML)跨平台的,可以被不同的编程语言理解和解析,使得不同语言的系统可以互相通信

总结

  • 序列化:把对象转换成一种可存储或传输的格式

  • 反序列化:把序列化的数据恢复成原始的对象

  • 通俗地说,序列化和反序列化就像打包和拆包的过程。打包(序列化)使得数据可以安全方便存储和传输,而拆包(反序列化)使得数据可以被重新使用

标签:解析,字节,对象,字符串,格式,Android,序列化,数据
From: https://www.cnblogs.com/ajunjava/p/18386596

相关文章

  • 【性能优化】:设计模式与技术方案解析(二)
    引言在【性能优化】:探索系统瓶颈的根源(一)文章中,我们已经分析了手动结算的弊端和瓶颈,本文来分析下怎么优化系统性能。需求分析既然手动结算耗时费力易出错,那么能不能开发一个**程序自动化处理**呢?如果要开发一个自动化跑批的程序,核心功能点是什么呢?第一:需要能正常运行;......
  • Android App启动流程
    1.通过Launcher启动应用时,点击应用图标后,Launcher调用startActivity启动应用。 2.LauncherActivity最终调用Instrumentation的execStartActivity来启动应用。 3.Instrumentation调用ActivityManagerProxy(ActivityManagerService在应用进程的一个代理对象)......
  • 非结构化文档解析
    参考:RAG效果优化:高质量文档解析详解知识库RAG的核心之一就是知识库的离线存储,如何将非结构化文档存储是非常重要的。PDF和Word文件结构word文件解析pdf文件解析Papermage介绍总结阿里云上的文件解析方法示例准确率参考......
  • Android开发 - Parcel 类打包对象数据进行传递解析
    Parcel是什么Parcel是用于对象序列化和反序列化的一个类。通俗地说,它是一种轻量级的容器,常用于打包对象的数据(如基本类型和其他Parcelable对象),使它们能够在不同的组件(如Activity、Service等)之间传递Parcel的主要作用不同的组件(如Activity、Service)之间需要传递数据。......
  • 我的新书《Android系统多媒体进阶实战》正式发售
    我的新书要正式发售了,把链接贴在下面,感兴趣的朋友可以支持下。❶发售平台:当当,京东,抖音北航社平台,小红书,b站❷目前当当和京东已开启预售❸当当网https://u.dangdang.com/KIDHJ❹京东商城https://item.m.jd.com/product/10109083199634.html?gx=RnAoqRAjajbdh8lR5Q&gxd......
  • Android开发 - Parcelable 接口实现不同组件之间传递数据解析
    什么是ParcelableParcelable是用于对象序列化的一种接口。通俗来讲,Parcelable允许将一个对象转化为一个字节流,这样你就可以将这个对象在不同的组件之间(如Activity、Service等)进行传递为什么需要Parcelable组件之间通信时(比如在两个Activity之间传递数据),传递的对象必......
  • Android经典实战之存储方案对比:SharedPreferences vs MMKV vs DataStore
    本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点在Android开发中,键值对存储(Key-ValueStorage)是一种经常用到的轻量级数据存储方案。它主要用于保存一些简单的配置数据或状态信息,例如用户设置、缓存数据等。常......
  • Android Audio分区——车载多区音频基础(一)
            AndroidAudio多区音频功能主要针对的是AndroidAutomotive这样的场景,它允许在同一个Android设备上支持多个独立的音频区域,每个区域可以有不同的音频输出设置。这种功能特别适用于汽车环境,因为车内通常有多个乘客,他们可能希望听不同的音频内容。一、概念......
  • 历年CSP-J初赛真题解析 | 2016年CSP-J初赛阅读程序(23-26)
    学习C++从娃娃抓起!记录下CSP-J备考学习过程中的题目,记录每一个瞬间。附上汇总贴:历年CSP-J初赛真题解析|汇总_热爱编程的通信人的博客-CSDN博客#include<iostream>usingnamespacestd;intmain(){intmax,min,sum,count=0;inttmp;cin>>tmp;......
  • Android Qcom USB Driver学习(十一)
    基于TI的FirmwareUpdate固件升级的流程分析usbapplictionlayers的数据USBProtocolPackage①/②maptocheckpasswordcorrectPackageFormat:Byte[0]=ReportIdByte[1]=ValidLength(0x21=33)Byte[2]=BSLCoreCommands(0x11RXPassword)Byte[3]=Val......