在不实现 Serializable 接口的情况下对字段进行序列化
Field getting serialized without implementing Serializable interface
我有一个 java class 实现了 Serializable 接口。它具有 String、BigDecimal 和其他 java 可序列化的预定义类型。它还包括一个未实现 Serializable 的自定义 class。自定义类型也被序列化为 JSON。
但是有警告显示要么使其成为瞬态,要么使自定义类型实现可序列化。
即使类型没有实现 Serializable,它是如何序列化的?我应该忽略警告(SonarLint 消息)吗?
那是因为 Jackson 在 serializing/deserializing 时不使用 java.lang.Serializable
类型提示。杰克逊可以 serialize/deserialise 大多数 Java 类型。看看 com.fasterxml.jackson.databind.ser.std
和 com.fasterxml.jackson.databind.deser.std
。如果您使用 ObjectMapper
,您可以像 guide.
中那样配置所需的功能
忽略警告取决于您的对象类型。例如,关于值类型序列化的讨论很好。
Why should Java's value-based classes not be serialized?
我有一个 java class 实现了 Serializable 接口。它具有 String、BigDecimal 和其他 java 可序列化的预定义类型。它还包括一个未实现 Serializable 的自定义 class。自定义类型也被序列化为 JSON。
但是有警告显示要么使其成为瞬态,要么使自定义类型实现可序列化。
即使类型没有实现 Serializable,它是如何序列化的?我应该忽略警告(SonarLint 消息)吗?
那是因为 Jackson 在 serializing/deserializing 时不使用 java.lang.Serializable
类型提示。杰克逊可以 serialize/deserialise 大多数 Java 类型。看看 com.fasterxml.jackson.databind.ser.std
和 com.fasterxml.jackson.databind.deser.std
。如果您使用 ObjectMapper
,您可以像 guide.
忽略警告取决于您的对象类型。例如,关于值类型序列化的讨论很好。
Why should Java's value-based classes not be serialized?