Table of Contents
Manipulation de JSON et XML en Java : une approche structurée
Introduction
Le format JSON (JavaScript Object Notation) et le langage XML (Extensible Markup Language) sont deux formats populaires pour représenter des données structurées. En tant que développeur, il est essentiel de connaître comment manipuler ces formats dans votre code Java. Dans cet article, nous allons explorer les étapes nécessaires pour lire et écrire du JSON et du XML en utilisant les bibliothèques Gson et JAXP.
Section 107.9 : Extrait d’un élément JSON
Supposons que vous ayez un chaîne JSON contenant des informations sur une personne :
{
"name": "John",
"age": 21
}
Pour extraire les valeurs de l’élément name et age, nous pouvons utiliser la bibliothèque Gson comme suit :
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonExtrait {
public static void main(String[] args) {
String json = "{\"name\": \"John\", \"age\":21}";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
System.out.println(jsonObject.get("name").getAsString()); // John
System.out.println(jsonObject.get("age").getAsInt()); // 21
}
}
Section 107.10 : Encoding de données en JSON
Si vous devez créer un objet JSON et y ajouter des valeurs, vous pouvez utiliser la classe JSONObject comme suit :
import javax.json.JSONObject;
import javax.json.JsonArray;
public class JsonEncoding {
public static void main(String[] args) {
// Création d'un objet JSON vide
JSONObject object = new JSONObject();
// Ajout de valeurs à l'objet JSON
object.put("foo", "bar");
object.put("temperature", 21.5);
object.put("year", 2016);
// Ajout d'un autre élément au sein de l'objet
JSONObject secondary = new JSONObject();
secondary.put("Hello", "world");
object.put("message", secondary);
// Création d'une liste de valeurs
JsonArray someMonths = new JsonArray(new String[] {"January", "February"});
someMonths.add("March"); // Ajout d'un élément à la fin de la liste
someMonths.add(4, "May"); // Ajout d'un élément en position 5
// Ajout de la liste à l'objet JSON
object.put("months", someMonths);
// Conversion de l'objet JSON en chaîne
String json = object.toString();
System.out.println(json);
}
}
Section 107.11 : Décodage de données JSON
Pour extraire les valeurs d’un objet JSON, vous pouvez utiliser la classe JSONObject comme suit :
import javax.json.JSONObject;
import javax.json.JsonArray;
public class JsonDecoding {
public static void main(String[] args) {
String json = "{\"foo\":\"bar\",\"temperature\":21.5,\"year\":2016,\"message\":{\"Hello\":\"world\"},\"months\":[ \"January\",\"February\",\"March\",null,\"May\"]}";
// Décodage de la chaîne JSON en objet
JSONObject object = new JSONObject(json);
// Extraction des valeurs de l'objet JSON
String foo = object.getString("foo");
double temperature = object.getDouble("temperature");
int year = object.getInt("year");
// Extraction d'un autre élément au sein de l'objet
JSONObject secondary = object.getJSONObject("message");
String world = secondary.getString("Hello");
// Extraction d'une liste de valeurs
JsonArray someMonths = object.getJSONArray("months");
System.out.println(someMonths.length()); // Nombre d'éléments dans la liste
String february = someMonths.getString(1); // Extrait du deuxième élément de la liste
}
}
Section 108.1 : Parsing d’un document XML avec StAX
Pour parser un document XML, vous pouvez utiliser la bibliothèque StAX (Streaming API for XML) comme suit :
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
public class StaxParsing {
public static void main(String[] args) throws Exception {
String xmlDocument = "<?xml version='1.0' encoding='UTF-8' ?>" +
"<library>" +
"<book id='1'>Effective Java</book>" +
"<book id='2'>Java Concurrency In Practice</book>" +
"<notABook id='3'>This is not a book element</notABook>" +
"</library>";
// Création d'une instance de parser
XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
XMLStreamReader xmlStreamReader = xmlInputFactory.createXMLStreamReader(new StringReader(xmlDocument));
// Extraction des valeurs du document XML
Map<Integer, String> bookTitlesById = new HashMap<>();
while (xmlStreamReader.hasNext()) {
switch (xmlStreamReader.getEventType()) {
case XMLStreamConstants.START_ELEMENT:
System.out.println("Found start of element: " + xmlStreamReader.getLocalName());
if ("book".equals(xmlStreamReader.getLocalName())) {
int bookId = Integer.parseInt(xmlStreamReader.getAttributeValue("", "id"));
String bookTitle = xmlStreamReader.getElementText();
bookTitlesById.put(bookId, bookTitle);
}
break;
default:
break;
}
xmlStreamReader.next();
}
System.out.println(bookTitlesById);
}
}
Section 108.2 : Parsing et navigation d’un document XML avec DOM
Pour parser un document XML, vous pouvez utiliser la bibliothèque DOM (Document Object Model) comme suit :
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class DOMParsing {
public static void main(String[] args) throws Exception {
String xmlDocument = "<?xml version='1.0' encoding='UTF-8' ?>" +
"<library>" +
"<book id='1'>Effective Java</book>" +
"<book id='2'>Java Concurrency In Practice</book>" +
"</library>";
// Création d'une instance de parser
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new InputSource(new StringReader(xmlDocument)));
// Extraction des valeurs du document XML
NodeList nodeList = document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
System.out.println(node.getNodeName() + ": " + node.getTextContent());
}
}
}
En conclusion, la manipulation de JSON et XML en Java nécessite une approche structurée. Les bibliothèques Gson et JAXP offrent des outils puissants pour parser et écrire ces formats. En suivant les étapes décrites dans cet article, vous devriez être en mesure d’extraire les valeurs de JSON et XML avec facilité.
Étapes à suivre
- Ajoutez la bibliothèque Gson ou JAXP à votre projet.
- Créez un objet JSON ou XML en utilisant les classes correspondantes.
- Extraisez les valeurs de l’objet JSON ou XML en utilisant les méthodes appropriées.
- Utilisez les bibliothèques Gson et JAXP pour parser et écrire des documents JSON et XML.
Conclusion
La manipulation de JSON et XML est un élément essentiel dans le développement d’applications web et mobiles. Les bibliothèques Gson et JAXP offrent des outils puissants pour parser et écrire ces formats. En suivant les étapes décrites dans cet article, vous devriez être en mesure de manipuler avec facilité les données JSON et XML en Java.
Sujets à explorer
- Utilisation de la bibliothèque Jackson pour parser et écrire des documents JSON.
- Application des techniques de parsing et d’extraction de valeurs aux scénarios réels.
- Exploration de la bibliothèque XStream pour parser et écrire des documents XML.
In-Article Ad
Dev Mode
Mahmoud DEVO
Senior Full-Stack Developer
I'm a passionate full-stack developer with 10+ years of experience building scalable web applications. I write about Vue.js, Node.js, PostgreSQL, and modern DevOps practices.
Enjoyed this article?
Subscribe to get more tech content delivered to your inbox.
Related Articles
Manipuler JSON en Java : Guide Complet JSONObject, JSONArray et Gson
Apprenez a manipuler JSON en Java avec JSONObject, JSONArray et Gson. Creez, parcourez et convertissez vos donnees JSON efficacement avec des exemples pratiques et bonnes pratiques.
Manipuler les classes Java avec ASM et Javassist : bytecode, instrumentation et fichiers JAR
Apprenez a manipuler les classes Java avec ASM et Javassist : chargement, modification du bytecode, instrumentation et creation de fichiers JAR.
Synchronisation Java avec AtomicInteger : eviter la contention et optimiser les performances
Decouvrez comment utiliser les types atomiques Java (AtomicInteger, AtomicLong, AtomicReference, AtomicBoolean) pour reduire la contention, eviter les blocages et ameliorer les performances.