En este laboratorio aprenderemos como extraer los valores de las propiedades o los campos en un objeto Json de tipo String o bien, de tipo JsonObject.

Para este proceso únicamente necesitaremos tener la librería JSON la podemos obtener colocando la siguiente dependencia en nuestro archivo pom.xml:

<dependency>
  <groupId>org.json</groupId>
  <artifactId>json</artifactId>
  <version>20180130</version>
  <type>jar</type>
</dependency>

Luego en la clase donde crearemos nuestro método que leerá el json, debemos importar las siguientes referencias:

import org.json.JSONArray;
import org.json.JSONObject;

Tenemos un objeto json con el siguiente formato:

{
"Account":{
           "Holder":"Gari Kaspárov",
           "CurrencyCode":"CRC",
           "ProductName":"Cuenta",
           "State":"1"
},
"IsSuccessful":true,
"Errors":[{
           "Account":"123456789",
           "Code":"asde23"
}],
"OperationId":"31e32f8f-6da5-4d3c-8434-203d8f53ed89"
}

Para extraer el valor de algún campo, únicamente usaremos el siguiente código, lo explico a detalle en los comentarios:

//Declaramos nuestra variable de tipo String con un formato de Json
String responseJson = "{
"Account":{
           "Holder":"Gari Kaspárov",
           "CurrencyCode":"CRC",
           "ProductName":"Cuenta",
           "State":"1"
},
"IsSuccessful":true,
"Errors":[{
           "Account":123456789,
           "Code":"asde23"
}],
"OperationId":"31e32f8f-6da5-4d3c-8434-203d8f53ed89"
}";

//Convertimos el string en un objeto json
      JSONObject json = new JSONObject(responseJson);

//Obtenemos la propiedad dentro de una rama del json
      String holder = json.getJSONObject("Account").getString("Holder");

//Obtenemos la propiedad de tipo boolean fuera de una rama en un json
      boolean isSuccessful = json.getBoolean("IsSuccessful");

//Obtenemos la propiedad de tipo string fuera de una rama en un json
      String operationId = json.getString("OperationId");

//Para el caso de Errors, los [] representan que hay un arreglo en el json, para extraer los datos debemos acceder al arreglo
	  Integer account = json.getJSONArray("Errors").getJSONObject(0).getInt("Account");
	  String code = json.getJSONArray("Errors").getJSONObject(0).getString("Code");

//Imprimimos las respuestas
      System.out.println(holder);
      System.out.println(isSuccessful);
      System.out.println(operationId);

Nota: Para el arreglo Errors, si tenemos muchos objetos en el arreglo, deberemos recorrerlo por medio de un ciclo for y añadir el contador en getJSONObject(i)

De esta manera obtendremos la siguiente respuesta:

Como vemos en el ejemplo, lo importante es conoces el lugar donde se encuentre el campo que necesitamos extraer del json, ya sea dentro de una rama del json o fuera de ella.

Además, es importando definir en el llamado de la función, el tipo de dato que traeremos del objeto json, en el ejemplo usamos json.getString y json.getBoolean pero podemos utilizar otros métodos como getDouble, getFloat, getLong, getInt, entre otros, esto nos ayudará a tipar automáticamente el tipo de dato que recibamos en el json y así procesarlo mejor.

2 respuestas a «Cómo obtener los valores de las propiedades de un json en Java»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *