Java jackson如何使用自定义getter/setter序列化映射?

Java jackson如何使用自定义getter/setter序列化映射?,java,reflection,map,jackson,Java,Reflection,Map,Jackson,我在jackson中有一个bean,它使用@jsonanystetter方法将所有未知参数存储在一个映射中 @JSonAnySetter handleUnkowns(String k, Object v) { myMap.put(k,v); } 我将其用作所有数据类型的“基本bean”,这样,如果数据丢失,将填充未知参数,并且数据不会丢失。。。。而不是杰克逊崩溃 但是,我不希望这些未知的序列化形式被嵌套,也就是说,当对象被序列化时,我希望序列化参数位于对象的顶层。此外,我希望自定义字

我在jackson中有一个bean,它使用@jsonanystetter方法将所有未知参数存储在一个映射中

@JSonAnySetter
handleUnkowns(String k, Object v) 
{
   myMap.put(k,v); 
}
我将其用作所有数据类型的“基本bean”,这样,如果数据丢失,将填充未知参数,并且数据不会丢失。。。。而不是杰克逊崩溃

但是,我不希望这些未知的序列化形式被嵌套,也就是说,当对象被序列化时,我希望序列化参数位于对象的顶层。此外,我希望自定义字段也被序列化:

//I want this map to be serialized/deserialized : {"collarWidth":10 "name":"fido"}
class Dog extens JSonBean 
{
     int collarWidth=0;
     getCollarWidth(){return collarWidth;}
     setCollarWidth(int x){collarWidth=x;}
}
请注意,在上面的例子中,由于我是从映射扩展而来,Jackson的自定义映射序列化将发生,未知参数将成为json中的一个“字段”

因此,预期的JSON序列化将是
{“collarWidth”:10个“未知参数”:{“name”:“fido”}

而不是

{“collarWidth”:10“name”:“fido”}

那么-什么是将未知参数与已知参数“合并”的最简单方法,以便JavaBean序列化程序保留与输入字符串相同的嵌套


显而易见的解决方案是将“myMap”对象中的参数与序列化映射合并,但这似乎有些过分,我认为这个问题可能有一个更优雅的解决方案。

您是否签出了
@JsonAnyGetter
注释?方法返回的映射将被展开,以使其与
@JsonAnySetter
一起工作。解释用法。

您是否签出了
@JsonAnyGetter
注释?方法返回的映射将被展开,以使其与
@JsonAnySetter
一起工作。解释用法。

Nevermind:我想出来了,就把它放在“ol电子日记”上:。。。好。。。我的解决方案有点不雅观。最好使用自定义序列化程序,然后手动编辑映射。所以任何这样的答案都会很有帮助。没关系,我想出来了,就把它放在“在线日记”上吧。。。好。。。我的解决方案有点不雅观。最好使用自定义序列化程序,然后手动编辑映射。因此,这方面的任何答案都将非常有用。