jackson v1.9.13弹簧3.2.0你好我花了好几天的时间试图弄清楚如何在序列化期间将字段从bean添加到JSON中。
这似乎是一个非常基本的功能,但我走的每一条路都会撞到橡胶墙。
我想要实现的目标:
示例bean:
package org.mydomain;
public class MyBean implements Serializable {
private String foo;
public void setFoo( String inValue ) {
foo = inValue;
}
public String getFoo() {
return foo;
}
}
输出:
{
"_type" : "org.mydomain.MyBean",
"foo" : "bar"
}
我认为最简单的方法是扩展BeanSerializer写入"_type"属性,并委托剩余字段的超类序列化。问题是,方法的可及性和一些关键方法的"最终"条款使其陷入泥潭。
我尝试扩展BeanSerializerBase、JsonSerializer、BeanSerializer Modifier。
每次我都会遇到一些无法理解的24参数构造函数或一些未记录错误的方法。
非常令人沮丧。
有人知道如何实现上述目标吗?
我使用的是springmvc,因此我需要一个通过ObjectMapper配置的可插入解决方案。我不想用json特定的注释或序列化逻辑污染我的模型或控制器对象
非常感谢。
N。
您可以为MyBean
创建一个代理类,并使用它来代替MyBean
。这不需要对原始类进行更改。您只需要将原始的MyBean
对象替换为代理对象。虽然您可以在不需要MyBean
接口的情况下使用,但使用接口更干净。
package org.mydomain;
public interface IMyBean{
public String getFoo();
}
public class MyBean implements IMyBean,Serializable {
private String foo;
public void setFoo( String inValue ) {
foo = inValue;
}
public String getFoo() {
return foo;
}
}
public class MyBeanProxy implements IMyBean,Serializable {
private IMyBean myBean;
private String type;
public MyBeanProxy(IMyBean myBean, String type){
this.myBean = myBean;
this.type = type;
}
public String getFoo() {
return myBean.getFoo();
}
public String getType(){
return type;
}
}