一句话解释Java中的序列化和反序列化

好多技术名词特别傻x,取一堆特别绕的名词,然后把人绕的云里雾里,尤其是对初学者,实际就是一句话的事儿。

实际上,什么是Java中的序列化和反序列化啊?

序列化和反序列化的本质就是将Java对象与JSON数据之间进行转换!

说白了,

反序列化:就是后端工程师,把前端扔过来的JSON报文(本质上就是一个字符串),给在接口Controller这里解析了(JSON.parseObject),然后解析成Java对象,以便去代码里去使用。

序列化:就是上面说的,这个Java对象用完了,然后还得传回给前端,那就把这个用完的Java对象(含修改),再给它拼成一个JSON报文(JSON.toJSONString)(本质上也就是一个字符串)再给它扔回去。

就这么简单的事儿。

那么看懂了就不用看下面了,下面补充个详细地说法:

序列化反序列化的本质就是将Java对象与JSON数据之间进行转换。

反序列化(Deserialization)

反序列化是将 JSON 字符串 转换回 Java 对象 的过程。

在这个过程中,JSON 字符串会被解析并映射到 Java 对象的各个属性中,重新生成一个对象。

例如,使用 Fastjson 库的JSON.parseObject()方法来将JSON字符串反序列化为Java对象。反序列化的目的是将从外部系统、文件或网络接收到的JSON数据重新转化为Java对象,以便在应用程序中处理。

String jsonString = "{ \"containerNeedList\": [ ... ] }"; // JSON 字符串

ContainerV1 container = JSON.parseObject(jsonString, ContainerV1.class); // 将 JSON 字符串反序列化为 Java 对象

序列化(Serialization)

序列化是将Java对象转换成JSON字符串的过程。

在这个过程中,Java 对象会被转换成一个JSON格式的数据,通常用于数据交换、存储或传输。

例如,使用Fastjson库的JSON.toJSONString()方法来将一个Java对象序列化成JSON字符串。序列化的目的是方便将对象的数据结构传输到其他系统、存储到文件或者数据库中,或者通过网络发送给其他客户端或服务。

ContainerV1 container = new ContainerV1();

// 设置 container 的属性...

String jsonString = JSON.toJSONString(container); // 将 container 对象序列化为JSON 字符串

总结:

序列化:将Java对象转化为JSON 字符串(或其他格式)。

反序列化:将JSON字符串转化回Java对象。

因此,序列化反序列化确实就是将Java对象和JSON数据进行相互转换的过程,通常用于数据交换和持久化。

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-13 19:06
已编辑
今天没什么推进,导师叫去读论文,准备明天开启缓存一些牛客找的八股:说一下登录模块的设计 拦截器和过滤器的区别ThreadLocal是用来干什么的ThreadLocal可能有什么风险,如何避免子线程能看到父线程的ThreadLocal值吗(不能,因为ThreadLocal线程私有)那子线程需要用到父线程ThreadLocal里面的数据怎么办(我理解问的是线程之间如何通信,但下来查了一下可以用InheritableThreadLocal设置子线程的ThreadLocal)介绍一下threadlocal。答了一下threadlocalmap和线程隔离。追问了可能出现的问题。忘了,后续复盘觉得可能是因为key的弱引用导致gc之后内存浪费,或者线程池复用没及时清理导致数据污染?问了线程池,应用场景,参数介绍。后续复盘发现unit说漏了。ThreadLocal是如何导致内存泄漏的多线程中threadlocal使用局限性threadlocalmapThreadLocal的应用场景threadlocal的底层实现,和早期的实现相比有哪些优势线程池场景下,threadlocal有哪些魔改版本吗让你来改,你会怎么魔改? java中的反射应用场景 3、threadlocal是什么1. ThreadLocal底层原理2. ThreadLocal会造成内存泄露吗?3. 线程池参数[2.ThreadLocal原理,为什么要以Thread为维度进行隔离 ](https://www.nowcoder.com/feed/main/detail/004a18c004e248f0be90eed82520f4b9?sourceSSR=search)\9. 如何替代Threadlocal9.项目中threadLocal的作用,是否涉及到多线程[ThreadLocal了解吗 20. ThreadLocal子线程如何访问父线程的数据(没了解过)](https://www.nowcoder.com/feed/main/detail/c88c7265ced04313ae0cbdc2f374b8f8?sourceSSR=search)[问我threadlocal有哪些参数,我说有get,set和remove。面试官说这是函数吧,我说对对,参数有threadlocalMap 然后map里面有key 和 value 。     ](
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务