JSON-сериализация ответов Джерси, когда у сущности есть поле с содержимым JSON - PullRequest
0 голосов
/ 04 октября 2018

Я использую 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?

...