Resttemplate неправильно десериализует JSON

мой сервер выводит следующий объект JSON: (ContentType = application / json)

{"Name":["Name1","Name2"]}

Это мой код Java для попытки прочитать это в POJO.

Он создает экземпляр класса Names, но массив внутри имеет значение NULL.

Что мне здесь не хватает?

restTemplate = new RestTemplate();
uri = "http://localhost:80/api/names";

Names namesWrapperInstance = restTemplate.getForObject(uri, Names.class);

if (namesWrapperInstance != null && namesWrapperInstance.getNames() != null) {
  for(String name : namesWrapperInstance.getNames()) {
    System.out.print(name);
  }
}

@JsonRootName(value = "Name")
class Names {
  private String[] Names;

  public Names() {

  }

  public String[] getNames() {
    return Names;
  }

  public void setNames(String[] Names) {
    this.Names = Names;
  }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
1 404
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Удалите аннотацию JsonRootName, соблюдайте соглашения об именах Java в коде Java и аннотируйте поле names с помощью @JsonProperty("Name").

Я также настоятельно рекомендую использовать коллекции, а не массивы.

Если можете, вам также действительно следует провести рефакторинг JSON. Используйте строчные буквы для полей, как в Java, и переименуйте его в names, поскольку это массив, содержащий несколько имен, а не только одно. Если вы это сделаете, аннотация JsonProperty больше не понадобится.

большое спасибо, это сработало. К сожалению, у меня нет возможности изменять код на стороне сервера.

Christian 02.11.2018 18:11

Другие вопросы по теме