Исключение при десериализации с @JsonRootName - PullRequest
0 голосов
/ 11 февраля 2019

Десериализация не работает, когда есть несколько узлов, доступных на одном уровне со значением, указанным в JsonRootName

Примечание. Оболочка настроена со следующими параметрами:

objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true);

Класс:

@NoArgsConstructor
@AllArgsConstructor
@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)

@JsonRootName(value = "response")
public class UserProfile {
  String name;
  String link;
}

Ввод JSON (работает):

{
  "response": {
    "name": "User one:",
    "link": "Some Link"
  }
}

Ввод JSON (не работает)

{
  "response": {
    "name": "User one:",
    "link": "Some Link"
  }, 
  "apiVersion" : 1.0
}

Добавление оболочки для полей response и apiVersion решит эту проблему, что лишит смысла использование тега JsonRootName

Как десериализовать, когда на корневом уровне имеется более одного поля (без использования другого класса-оболочки)?

...