No puedo convertir la cadena Json dada a un objeto java

Validado el formato Json, es correcto.

@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());
        }
    }

}

Esperaba que la salida fueran valores de Id, pero el resultado es nulo nulo

1
Vamsi 6 oct. 2019 a las 08:37

1 respuesta

La mejor respuesta

El problema son las letras mayúsculas en los nombres de campo json y los campos de clase java.

Si es posible, cambie el nombre de 'Id' -> 'id' en json y java. De lo contrario, debe agregar nombres de propiedades json a los campos java:

public class DevPol {

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

//Setters and Getters

}
3
i.bondarenko 6 oct. 2019 a las 05:55