Tutorial de Api Jackson
Jackson es una biblioteca Java popular para trabajar con JSON, pero también puede ser utilizada para trabajar con XML. En este tutorial, aprenderás cómo utilizar Jackson para convertir XML en JSON.
jackson-dataformat-xml
es una biblioteca de Jackson que proporciona soporte para trabajar con datos en formato XML. Esta biblioteca permite leer y escribir datos XML en objetos Java utilizando la misma API de ObjectMapper
que se utiliza para trabajar con datos en formato JSON.
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.14.1</version>
</dependency>
La biblioteca jackson-dataformat-xml
proporciona anotaciones de Jackson que se pueden utilizar para controlar cómo se mapean los datos XML a objetos Java y viceversa. Algunas de las anotaciones más comunes son @JacksonXmlProperty
, @JacksonXmlRootElement
y @JacksonXmlText
.
Una vez que tienes Jackson en tu proyecto, puedes utilizar XmlMapper
para convertir un archivo XML en un objeto Java, y luego utilizar ObjectMapper
para convertir el objeto Java en una cadena JSON. El siguiente ejemplo muestra cómo hacerlo:
package com.ejemplos.jackson;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class EjemploJackson {
public static void main(String[] args) {
try {
String xmlString = "<person><name>John</name><age>30</age><address><city>New York</city></address><phoneNumbers><phoneNumber>1234567890</phoneNumber><phoneNumber>0987654321</phoneNumber></phoneNumbers></person>";
XmlMapper xmlMapper = new XmlMapper();
JsonNode jsonNode = xmlMapper.readTree(xmlString.getBytes());
ObjectMapper objectMapper = new ObjectMapper();
String jsonString = objectMapper.writeValueAsString(jsonNode);
System.out.println(jsonString);
}catch (Exception e) {
e.printStackTrace();
}
}
}
{
"person": {
"name": "John",
"age": 30,
"address": {
"city": "New York"
},
"phoneNumbers": {
"phoneNumber": [
"1234567890",
"0987654321"
]
}
}
}