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,谢谢你的回复。。我读了这篇文章,但仍然不明白如何解决我的问题:(