HOWTO · Java
Gestion des tableaux JSON en Java
Cet article traite du framework JSON, de sa structure, des types de données et de son utilisation en Java.
Sur cette page
Pour lire un tableau JSON depuis un fichier en Java, ajoutez à votre projet un analyseur JSON tel que JSON.simple, analysez le fichier, puis parcourez le tableau obtenu. Java n’inclut pas d’analyseur JSON généraliste dans ses bibliothèques standard. JSON.simple est une dépendance externe : ajoutez-la au moyen de l’outil de build ou du gestionnaire de dépendances de votre projet.
JSON.simple a connu plusieurs versions et lignes d’API. L’exemple ci-dessous utilise la famille d’API org.json.simple ; avant de l’utiliser, choisissez une version et consultez sa documentation pour connaître ses coordonnées de dépendance, son API d’analyse et ses types de valeurs. Aucune version ni aucun outil de build particulier n’est supposé ici. Si la version choisie utilise d’autres packages ou signatures de méthodes, adaptez l’exemple à sa documentation au lieu de copier une déclaration de dépendance qui ne lui correspond pas.
Manipuler des tableaux JSON en Java
JSON (JavaScript Object Notation) représente les données sous forme d’objets, de tableaux, de chaînes, de nombres, de valeurs booléennes et de null. En Java, un analyseur est nécessaire pour convertir le texte JSON en valeurs exploitables par le code. JSON.simple est une des options possibles pour cette étape.
Un tableau est une séquence ordonnée délimitée par des crochets. Un objet est un ensemble de valeurs nommées délimité par des accolades. Les tableaux et les objets peuvent être imbriqués : un fichier peut donc commencer par un tableau dont les éléments sont des objets contenant eux-mêmes d’autres tableaux ou objets.
Objets JSON et tableaux JSON en Java
Un objet associe des valeurs à des clés sous forme de chaînes ; chaque clé et sa valeur sont séparées par deux-points, et les entrées par des virgules. Dans un tableau, les valeurs sont repérées par leur position et séparées par des virgules. Par exemple, la valeur JSON intégrée [1, "abc", {"name":"xyz"}] est un tableau contenant un nombre, une chaîne et un objet. La clé name de cet objet est associée à une chaîne.
Le fichier utilisé dans l’exemple contient un tableau de premier niveau avec un objet. Cet objet comprend une chaîne, un nombre, deux tableaux imbriqués et un objet imbriqué :
[{"name":"MMN","roll":24,"marks":[91,95,97,97,94],"parents":{"name":"IMT","mobile":"1234567890"},"hobbies":["sports","reading","music"],"others":["A",1]}]
La structure compte lorsque vous extrayez des valeurs : le code qui lit name, roll ou parents suppose que ces clés existent et contiennent les types JSON attendus. Pour des données provenant d’une source que vous ne contrôlez pas, vérifiez chaque valeur avant de la traiter comme un type Java particulier.
Lire un tableau JSON depuis un fichier en Java avec JSON.simple
Ajoutez JSON.simple à l’aide du gestionnaire de dépendances de votre projet. Utilisez les coordonnées de l’artefact indiquées dans la documentation de la version précise que vous avez choisie ; cet article ne prescrit pas de coordonnées, car aucune version ni aucun outil de build particulier n’est défini. La famille de packages org.json.simple est externe : ses imports et ses appels d’analyse ne peuvent pas fonctionner dans un environnement Java seul sans la bibliothèque correspondante dans le classpath.
Dans un projet utilisant une version compatible de JSON.simple, l’étape d’analyse peut se représenter ainsi : new JSONParser().parse(reader). Consultez la documentation de cette version pour confirmer l’API exacte de l’analyseur et les types de collections renvoyés. L’exemple ci-dessous se concentre sur l’étape suivante : parcourir la structure de collections Java produite par un analyseur. Ses valeurs correspondent au fichier d’exemple ci-dessus et il n’utilise que les collections de la bibliothèque standard Java, ce qui permet de l’exécuter de manière autonome.
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class JSONArrayTraversal {
public static void main(String[] args) {
Map<String, Object> parents = new LinkedHashMap<>();
parents.put("name", "IMT");
parents.put("mobile", "1234567890");
Map<String, Object> record = new LinkedHashMap<>();
record.put("name", "MMN");
record.put("roll", 24);
record.put("marks", Arrays.asList(91, 95, 97, 97, 94));
record.put("parents", parents);
record.put("hobbies", Arrays.asList("sports", "reading", "music"));
record.put("others", Arrays.asList("A", 1));
List<Map<String, Object>> records = Arrays.asList(record);
for (Map<String, Object> item : records) {
System.out.println("Name: " + item.get("name"));
System.out.println("Roll: " + item.get("roll"));
System.out.println("Marks: " + item.get("marks"));
System.out.println("Hobbies: " + item.get("hobbies"));
Map<?, ?> parent = (Map<?, ?>) item.get("parents");
System.out.println("Parent's Name: " + parent.get("name")
+ ", Mobile: " + parent.get("mobile"));
System.out.println("Others: " + item.get("others"));
}
}
}
Name: MMN
Roll: 24
Marks: [91, 95, 97, 97, 94]
Hobbies: [sports, reading, music]
Parent's Name: IMT, Mobile: 1234567890
Others: [A, 1]
Dans une application, transmettez à un code de parcours adapté aux types de collections de la version choisie la valeur renvoyée par l’analyseur JSON.simple. Ici, records représente le tableau analysé de premier niveau. Les conversions de type et la recherche des champs dépendent du schéma de l’exemple ; si les données d’entrée peuvent varier, vérifiez chaque élément du tableau et chaque champ avant de vous fier à son type. Gardez le lecteur ouvert pendant l’analyse et fermez-le ensuite, y compris si l’analyse échoue. Gérez les erreurs d’accès au fichier et d’analyse conformément au comportement documenté pour la version choisie et aux besoins de votre application. Lorsque vous reliez ce parcours à la lecture du fichier, indiquez un chemin qui existe et qui est lisible dans votre environnement.
Conclusion
Un tableau JSON est une séquence ordonnée, tandis qu’un objet JSON associe des valeurs nommées à des clés. Pour lire un tableau depuis un fichier en Java, utilisez un analyseur externe tel que JSON.simple, ajoutez à votre projet la dépendance documentée pour la version choisie, puis parcourez la structure analysée en fonction du schéma des données d’entrée. Consultez l’API et les types numériques de cette version avant de vous fier à des conversions ou à des changements de type.