Java 如何仅为字段而不是为类本身添加序列化程序
我有一个名为Java 如何仅为字段而不是为类本身添加序列化程序,java,jackson,jackson2,jackson-dataformat-csv,Java,Jackson,Jackson2,Jackson Dataformat Csv,我有一个名为AbstractEntity的基本JPA实体,属性为code,我还有大量其他JPA实体(ProductEntity,CategoryEntity,UserEntity),每一个都是从AbstractEntity扩展而来的 现在一些实体引用了其他实体,例如CategoryEntity有一个名为parentCategory的属性,或者ProductEntity有一个类别集合(categories) 现在我想让jackson序列化一个ProductEntity,但是每当属性的类型为Abst
AbstractEntity
的基本JPA实体,属性为code
,我还有大量其他JPA实体(ProductEntity
,CategoryEntity
,UserEntity
),每一个都是从AbstractEntity
扩展而来的
现在一些实体引用了其他实体,例如CategoryEntity
有一个名为parentCategory
的属性,或者ProductEntity
有一个类别集合(categories
)
现在我想让jackson序列化一个ProductEntity
,但是每当属性的类型为AbstractEntity
时,我希望它只打印code
,而不打印其他内容
我的解决方案是为AbstractEntity
添加一个自定义序列化程序
,但正如您可能猜到的那样,ProductEntity
也是一个AbstractEntity
,所以每当我说objectMapper.writeValueAsString(product)
时,我只得到code
。相反,我想要的是:
{
code: 'abc',
category : 'categoryA',
price : '12 $',
active : true
}
有没有办法告诉jackson只对字段而不是对象本身使用自定义序列化程序?
顺便说一句,我不能真正使用注释,因为我没有访问代码的权限,而且正如我所说的,类确实很多。我相信你会找到你想要的东西,你好,Eduardo,谢谢你的回复。。我读了这篇文章,但仍然不明白如何解决我的问题:(