Не удалось преобразовать Json String в объекты Java - PullRequest
1 голос
/ 06 октября 2019

Я не могу преобразовать данную строку Json в java-объект

Проверен формат Json, он правильный.

@JsonIgnoreProperties(ignoreUnknown = true)
public class DevPol {

    private String id;
    private Header header;

    //Setters and Getters
}

@JsonIgnoreProperties(ignoreUnknown = true)
public class Header {

    private String name;
    private String lastUpdate;
    private int priority;
    private boolean active;

    //Setters and Getters
}

import com.fasterxml.jackson.databind.ObjectMapper;
public class ConvertJsonToJava {

    static String apiResult = "[ {\"Id\":\"5899503ad06f7f0008817430\",  \"Header\":{  \"name\":\"ClCol\"," + 
            "         \"lastupdate\":\"2017-02-07T04:42:34.654Z\", \"priority\":1,  \"active\":true } }," + 
            "   { \"Id\":\"5899503ad06f7f0008817431\",\"Header\":{  \"name\":\"SysPol\"," +
            " \"lastupdate\":\"2017-02-07T04:42:34.659Z\", \"priority\":2, \"active\":true } }]"; 

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        DevPol[] devPOlArr = mapper.readValue(apiResult, DevPol[].class);
        for(DevPol devPol: devPOlArr) {

            System.out.println(devPol.getId());
        }
    }

}

Я ожидал, что выходные данные будут значениями Id, норезультат - ноль ноль

1 Ответ

3 голосов
/ 06 октября 2019

Проблема заключается в заглавных буквах в именах полей json и полях классов java.

Если возможно, переименуйте 'Id' -> 'id' в json и java. В противном случае вы должны добавить имена свойств json в поля java:

public class DevPol {

    @JsonProperty("Id")
    private String Id;
    @JsonProperty("Header")
    private Header Header;

//Setters and Getters

}
...