A la hora de transmitir datos a través de una red se puede hacer con diferentes formatos de textos, por ejemplo XML, YAML o JSON. En este artículo utilizaremos JSON, que es un texto plano, basado en la sintaxis de objeto de JavaScript. Dentro de un fichero de texto JSON podemos definir tipos de datos básicos como cadenas, arrays, números, booleanos y otros literales.

Una práctica muy habitual es parsear un JSON, ya sea para extraer los datos de él o insertarlos. En este caso nos centraremos en un problema que surgió con la inserción de datos en un JSON a partir de una estructura de datos (matriz …) en Java con la librería json.simple.

Resulta que cuando deseamos tener los campos dentro de un fichero JSON en un orden específico, Java no nos permite establecer dicho orden. Es decir,  al definir una array con unos campos ordenados que iremos recorriendo y a la vez insertando la información en un fichero JSON, dicha inserción ordenada de campos en el JSON no se cumplirá, sino que luego los campos se reordenaran en el JSON de forma aleatoria. En la siguiente imagen se puede ver un ejemplo.

 

Para solucionar este requerimiento se tuvo que hacer una modificación de la librería original Json.simple. Y para ello fue necesario descargarse el código fuente de la librería que está en la plataforma de control de versiones github. A continuación se  tuvo que modificar la colección de objetos HasMap, (que no tiene un orden predefinido) por un LinkedHasMap (que sí lo tiene) que nos permite ir insertando de una forma ordenada los campos en el JSON.

A continuación un ejemplo realizado con el IDE intellij en Java:

  1. Orden inicial de la matriz que queremos insertar en un JSON
String[] header={"Name","Surname","Country","State","City", "Address"};
String[] content={"Alex","Alexiades","Tazmania","Taz","Diablo", "Crazy Ave"}; 
  1. Resultado del parseo de la array con la librería json-simple sin modificar:

2.1/ Dependencia Maven

 <dependencies>
 <dependency>
 <groupId>com.googlecode.json-simple</groupId>
 <artifactId>json-simple</artifactId>
 <version>1.1.1</version>
 </dependency
 </dependencies>

2.2/ Resultado de JSON

 {
   "Address":"Crazy Ave",
   "State":"Taz",
   "Country":"Tazmania",
   "City":"Diablo",
   "Surname":"Alexiades",
   "Name":"Alex"
 }

  1. Sustitución la librería original por la modificada json-simple.jar

3.1 Lo primero es borrar las dependencias de maven de la librería original JSON y luego añadir la librería modifica que guardaremos en un directorio del proyecto.

3.2 Resultado del JSON con la biblioteca modificada json-simple.jar

 {
   "Name":"Alex",
   "Surname":"Alexiades",
   "Country":"Tazmania",
   "State":"Taz",
   "City":"Diablo",
   "Address":"Crazy Ave",
 }

Para obtener más información o descargar la librería modificada se puede hacer en el siguiente link de  github.

 

Alejandro Alexiades Estarriol