Conversion JSON en XML en Java

Mohammad Irfan 12 octobre 2023
  1. Convertir JSON en XML à l’aide de la bibliothèque org.json en Java
  2. Convertir JSON en XML à l’aide de la bibliothèque de soulignement en Java
  3. Convertir JSON en XML avec la bibliothèque Jackson en Java
Conversion JSON en XML en Java

Ce tutoriel explique comment convertir JSON en XML en Java.

Pour convertir JSON en XML, nous pouvons utiliser plusieurs bibliothèques telles que org.json, underscore et Jackson. Dans cet article, nous allons apprendre à utiliser ces bibliothèques et voir le processus de conversion de JSON en XML.

JSON est un format de données utilisé par l’application pour l’échange de données. Il est utilisé par les applications en raison de sa légèreté et de sa simplicité, tandis que XML est un langage de balisage et est également utilisé pour transférer des données.

Commençons par quelques exemples pour convertir le JSON en XML en Java.

Convertir JSON en XML à l’aide de la bibliothèque org.json en Java

Dans cet exemple, nous avons utilisé la bibliothèque org.json qui fournit JSONObject et une classe XML. La classe JSONObject est utilisée pour transformer une chaîne JSON en objet JSON, puis en utilisant la classe XML, nous avons converti le JSON en XML.

La classe XML fournit une méthode statique toString() qui renvoie le résultat sous forme de chaîne. Voir l’exemple ci-dessous.

import java.io.IOException;
import org.json.*;
public class SimpleTesting {
  public static void main(String[] args) throws IOException, JSONException {
    String jsonStr = "{student : { age:30, name : Kumar, technology : Java } }";
    JSONObject json = new JSONObject(jsonStr);
    String xml = XML.toString(json);
    System.out.println(xml);
  }
}

Production:

<student>
   <name>Kumar</name>
   <technology>Java</technology>
   <age>30</age>
</student>

Convertir JSON en XML à l’aide de la bibliothèque de soulignement en Java

Ici, nous avons utilisé la bibliothèque underscore pour convertir JSON en XML. Nous avons utilisé la classe U et sa méthode statique jsonToXml() qui renvoie XML sous forme de chaîne. Voir l’exemple ci-dessous.

import com.github.underscore.lodash.U;
import java.io.IOException;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    String jsonStr =
        "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
    System.out.println(jsonStr);
    String xml = U.jsonToXml(jsonStr);
    System.out.println(xml);
  }
}

Production:

{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>JSON</name>
  <integer number="true">1</integer>
  <double number="true">2.0</double>
  <boolean boolean="true">true</boolean>
  <nested>
    <id number="true">42</id>
  </nested>
  <array number="true">1</array>
  <array number="true">2</array>
  <array number="true">3</array>
</root>

Convertir JSON en XML avec la bibliothèque Jackson en Java

Ici, nous avons utilisé la classe ObjectMapper pour lire JSON puis la classe XmlMapper pour obtenir des données au format XML. Ici, nous avons utilisé deux packages principaux, jackson.databind et jackson.dataformat ; le premier contient des classes liées à JSON et le second comprend des classes liées à XML. Voir l’exemple ci-dessous.

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import com.fasterxml.jackson.dataformat.xml.ser.ToXmlGenerator;
import java.io.IOException;
import java.io.StringWriter;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    final String jsonStr =
        "{\"name\":\"JSON\",\"integer\":1,\"double\":2.0,\"boolean\":true,\"nested\":{\"id\":42},\"array\":[1,2,3]}";
    ObjectMapper jsonMapper = new ObjectMapper();
    JsonNode node = jsonMapper.readValue(jsonStr, JsonNode.class);
    XmlMapper xmlMapper = new XmlMapper();
    xmlMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_DECLARATION, true);
    xmlMapper.configure(ToXmlGenerator.Feature.WRITE_XML_1_1, true);
    StringWriter sw = new StringWriter();
    xmlMapper.writeValue(sw, node);
    System.out.println(sw.toString());
  }
}

Production:

{"name":"JSON","integer":1,"double":2.0,"boolean":true,"nested":{"id":42},"array":[1,2,3]}
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <name>JSON</name>
  <integer number="true">1</integer>
  <double number="true">2.0</double>
  <boolean boolean="true">true</boolean>
  <nested>
    <id number="true">42</id>
  </nested>
  <array number="true">1</array>
  <array number="true">2</array>
  <array number="true">3</array>
</root>

Article connexe - Java JSON

Article connexe - Java XML