json - Gson 序列化 Spring beans

标签 json spring serialization gson cglib

我正在使用Gson 1.6 和 Spring Framework WebSphere 6.1 上的 Java Web 应用程序 3.0 。我有一些 Spring bean,其实际实例是 CGLIB代理人。当我尝试通过 Gson 序列化这些 bean 时,该类的非原始属性不会被序列化。相反,我得到的是这样的东西:

{
   "CGLIB$BOUND":true,
   "CGLIB$CONSTRUCTED":true,
   "booleanProperty":true,
   "anotherBooleanProperty":true,
}

我期待的东西更像

{
   "stringProperty":"stringValue"
   "integerObjectProperty":17,
   "booleanProperty":true,
   "anotherBooleanProperty":true,
}

当我序列化非代理 POJO 时,输出完全符合我的预期。如何让 Gson 生成我期望的输出?

最佳答案

我想说你的问题是不良做法的结果。

Spring Bean 通常由行为而不是状态来定义。并且您应该只序列化具有状态而不是行为的类。

重构您的代码,将状态从 Bean 传输到值对象,然后序列化它们。

关于json - Gson 序列化 Spring beans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980379/

相关文章:

java - 如何从 session 中打印 bean 值?

java - 在服务器上使用没有 Spring Boot 或 context.xml 的 LegacyCookieProcessor

Java 序列化问题

xml - PowerShell 的 Import-Clixml 来自字符串

json - 将 JSON 解码为 Go 接口(interface){}

json - 如何在不重复代码的情况下填充 JSON 对象的一部分?

java - Spring Boot Rest Controller : adding text in the return type

c# - 使用 .NET core 3.0/System.text.Json 解析 JSON 文件

java - Java8 上的命名参数

java - 使用 Simple 设置 XML 反序列化类(XNA 到 Java 移植)