当实体具有包含JSON内容的字段时,Jersey响应的JSON序列化

时间:2018-10-04 14:48:16

标签: java jackson jersey jax-rs jersey-2.0

我使用Jersey2 / jaxrs并具有一些类,这些类的对象传递给Response.entity()。响应为JSON。问题在于我的类中的字段已经包含JSON对象,我不确定这些字段的序列化会发生什么。

这是我尝试过的。说我有这样一个模型:

class MyModel{
  public Object obj; // put Jackson's JsonNode here

  @com.fasterxml.jackson.annotation.JsonRawValue
  public String str; // put Jackson's JsonNode.toString() here
}

两个字段在最终结构中仅生成JSON字符串(所有引号均转义)。 @JsonRawValue被完全忽略。顺便说一句,如果我使用Jackson的ObjectMapper手动序列化对象,一切都会很好。

但是,我知道一种解决问题的方法,但是我不明白为什么它起作用,这困扰着我。如果我创建一个匿名子类,那么一切都会突然按预期工作,并且我的JSON子对象已成功嵌入到最终的JSON中:

MyModel model = new MyModel(){ /* why does this work? */ };

那么,为什么这种解决方法可行,将现有JSON对象嵌入最终JSON对象的正确方法是什么?

0 个答案:

没有答案