Я использую 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 полностью игнорируется.Кстати, все работает нормально, если я использую ObjectMapper Джексона для ручной сериализации объектов.
Тем не менее, я знаю способ решения моей проблемы, но я не понимаю, почему это работает, и это беспокоит меня.Если я создаю анонимный подкласс, все неожиданно работает как положено, и мои под-объекты JSON успешно встраиваются в окончательный JSON:
MyModel model = new MyModel(){ /* why does this work? */ };
Итак, почему этот обходной путь работает и как правильновстроить существующие объекты JSON в конечный объект JSON?