Resttemplate неправильно десериализует JSON - PullRequest
0 голосов
/ 02 ноября 2018

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

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

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

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

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

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;
  }
}

1 Ответ

0 голосов
/ 02 ноября 2018

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

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

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

...