Java对象转String是否属于序列化?求序列化的准确定义
序列化的准确定义
先看常见的基础定义:
Serialization is a mechanism of converting the state of an object into a byte stream.
(译:序列化是一种将对象状态转换为字节流的机制。)
你问把Java对象转成String算不算序列化?比如这段代码:
String json = objectMapper.writeValueAsString(request);
答案是算,这也是行业里公认的序列化操作,而序列化的准确定义其实要比“转字节流”更宽泛:
它的核心是把内存中对象的状态信息,转换成一种可存储、可传输,并且后续能还原回对象的格式。原始定义里的“字节流”只是最经典的实现(比如Java原生的Serializable接口),但并非唯一标准。
像JSON字符串这种文本格式,同样满足“可存储、可传输、可反序列化还原”的核心要求,所以这类把对象转成JSON、XML等字符串的操作,都属于序列化的范畴——只是属于文本序列化,和二进制序列化(转字节流)是不同的实现类型罢了。
总结下,序列化的准确定义是:将内存中对象的结构化状态,转换为与平台无关、可持久化或可传输的格式的过程,转换后的格式可以是字节流,也可以是JSON这类文本字符串。
内容的提问来源于stack exchange,提问作者Deepu Varma
相关产品推荐
相关产品推荐

