es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Mapear objeto JSON a objeto Java (pero las variables de mi objeto JSON tienen la primera letra en mayúscula)

Tengo una API de terceros que devuelve una respuesta como un objeto JSON cuyas variables tienen la primera letra en mayúscula
Mi objeto JSON se ve así:
json
{
“ApiStatus”:{
“ApiStatusCode”:5000,
“ApiMessage”:”OK”,
“FWStatusCode”:0,
“FWMessage”:””
},
“Encounter”:{
“EncounterId”:”hgasfdjsdgkf”,
“ApiLinks”:[
{
“Title”:”Self”,
“Description”:”API de referencia propia”,
“ResourceName”:”self”,
“HttpMethods”:[
“GET”,
“DELETE”
],
“URL”:”http://www.google.com/api/v2/test/test2/hchvjh”
},
{
“Title”:”Transmitir un informe”,
“Description”:”Crear un informe y transmitirlo.”,
“ResourceName”:”transmitter”,
“HttpMethods”:[
“POST”
],
“URL”:”http://www.google.com/api/v2/test3/test3/jydgfkshd/transmitter”
}
]
}
}

Como puedes ver arriba, la primera letra de las variables está en mayúscula y necesito asignar eso en mi clase de objeto Java, así que cuando intenté usar ObjectMapper, no funcionó.
MyJavaObject object = new ObjectMapper().readValue(jsonObject, MyJavaObject.class);

Cualquier sugerencia o ayuda sería genial.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes usar la anotación @JsonProperty de la biblioteca Jackson para mapear los nombres de los campos del objeto JSON con los nombres de las variables de tu objeto Java. Debes anotar las variables de tu clase Java con @JsonProperty y dar el nombre del campo JSON como parámetro de la anotación.

    Aquí tienes un ejemplo de cómo puedes modificar tu clase Java:

    public class MyJavaObject {
        @JsonProperty("ApiStatus")
        private ApiStatus apiStatus;
    
        @JsonProperty("Encounter")
        private Encounter encounter;
    
        // getters and setters
    }
    

    En este código de ejemplo, la anotación @JsonProperty se utiliza para mapear el campo JSON ApiStatus con la variable Java apiStatus, y el campo JSON Encounter con la variable Java encounter.

    Por lo tanto, solo necesitas añadir esta anotación a todas las variables que tengan nombres diferentes en tu objeto JSON que en tu objeto Java.

    Después de eso, puedes usar ObjectMapper para mapear el objeto JSON a tu objeto Java:

    MyJavaObject object = new ObjectMapper().readValue(jsonObject, MyJavaObject.class);
    

    Ahora, ObjectMapper debería poder mapear los campos del objeto JSON a las variables del objeto Java.

Comments are closed.