Тело ответа Spring RestTemplate имеет значение null при попытке синтаксического анализа JSON - PullRequest
0 голосов
/ 28 мая 2020

Я пробовал много решений аналогичных решенных проблем на этой странице, но не могу заставить их работать. Я делаю петицию на получение массива JSON, и я хочу сопоставить эти значения с моим классом.

Я получил этот класс:

public class Devices {

    private String DeviceName;
    private String DeviceDescription;

    public String getDeviceName() {
        return DeviceName;
    }

    public void setDeviceName(String deviceName) {
        this.DeviceName = deviceName;
    }

    public String getDeviceDescription() {
        return DeviceDescription;
    }

    public void setDeviceDescription(String deviceDescription) {
        this.DeviceDescription = deviceDescription;
    }

}

Петиция GET возвращается это JSON ниже:

[{"DeviceName":"AMIXT-20EC-VIDM0000","DeviceDescription":"Samsung device "},{"DeviceName":"AMIXT-E0F9-VIDM0001","DeviceDescription":"Tablet Huawei"}]

Я пробовал такие решения (также пробовал с getForObject):

ResponseEntity<Devices[]> responseEntity = restTemplate.getForEntity(url, Devices[].class);

Как мы видим на этой фотографии , свойства тела равны нулю

Что мне не хватает?

1 Ответ

1 голос
/ 28 мая 2020

Проблема связана с именем полей в JSON, имя начинается с заглавной буквы.

Одним из простых решений было бы использовать аннотацию @JsonProperty для переменных, определенных в Devices класс

public class Devices {

    @JsonProperty("DeviceName")
    private String deviceName;

    @JsonProperty("DeviceDescription")
    private String deviceDescription;

    public String getDeviceName() {
        return deviceName;
    }

    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }

    public String getDeviceDescription() {
        return deviceDescription;
    }

    public void setDeviceDescription(String deviceDescription) {
        this.deviceDescription = deviceDescription;
    }
}
...