我使用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对象的正确方法是什么?