jackson mixins抛出stackoverflow错误

时间:2016-04-01 22:28:48

标签: java json jackson jax-rs

您好我正在为从我公司的公共框架中检索到的用户对象编写Rest服务。

用户userobj = commonframework.getuser(userid); //用户是界面

问题是来自普通框架的用户对象有一个带有2个getter的对象,用于String字段,如" isSomeflag()"和" getSomeflag()" 我无法修改commonframework中的代码

我最终使用了** Jackson Mixins **但它丢弃了stackoverflow错误。任何帮助将不胜感激。

以下代码

    public abstract class IgnoreMixin {
    @JsonIgnore 
    public abstract String isServiceOnlyflg();
}

在服务方式中:

@Produces(MediaType.APPLICATION_JSON)
public Response createUserInfo{
mapper = new ObjectMapper();
mapper.getSerializationConfig().addMixInAnnotations(DealerImpl.class,IgnoreMixin.class);
writer = mapper.writer().withDefaultPrettyPrinter();
return writer.writeValueAsString(userobj);
}

接近-2

我尝试创建具有类似属性的本地类,并尝试将这些属性从用户对象映射到本地对象。 初始推理问题类仅在用户对象中引用一次

但问题是用户包含许多成员对象,而这些对象反过来多次引用问题对象而我必须从框架用户结构创建许多类的许多本地副本

的任何解决方案

1 个答案:

答案 0 :(得分:2)

如果您的基类中的方法是,请遵守文档 isSomeflag()getSomeflag()。你应该使用

 @JsonProperty("newProp") abstract int isSomeflag()
 @JsonIgnore abstract int getSomeflag();

忽略一个,让另一个人与JsonProperty进行编组。

也可能你是一个循环依赖,你需要打破jsonfilter,检查这个link

 FilterProvider filterProvider = new SimpleFilterProvider()
      .addFilter("filtermixin", SimpleBeanPropertyFilter.serializeAllExcept("circulardependency"));