Convertir un tableau JSON en un tableau ou une liste Java avec Jackson

Online Coding Courses for Kids

introduction

Dans cet article, nous allons convertir un Tableau JSON dans une Tableau Java et Liste Java en utilisant Jackson.

Puisque nous utilisons Jackson, vous devrez l’ajouter à votre projet. Si vous utilisez Maven, c’est aussi simple que d’ajouter la dépendance:


    com.fasterxml.jackson.core
    jackson-databind
    2.11.2

Ou, si vous utilisez Gradle:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.11.2'

Puisque nous mappons de JSON à nos propres objets, allons-y et définissons un POJO:

public class Language {

    private String name;
    private String description;

    // Getters, setters and toString() method

Lire JSON à partir d’une chaîne

Commençons par lire JSON à partir d’une chaîne. La chaîne contient un tableau de langages de programmation, avec de brèves descriptions:

String json = "[{"name": "Java", "description": "Java is a class-based, object-oriented programming language."},{"name": "Python", "description": "Python is an interpreted, high-level and general-purpose programming language."}, {"name": "JS", "description": "JS is a programming language that conforms to the ECMAScript specification."}]";

Utilisation de Jackson ObjectMapper class, il est facile de lire les valeurs et de les mapper à un objet ou à un tableau d’objets. Nous utilisons simplement le readValue() méthode, en passant le contenu JSON et la classe à laquelle nous aimerions mapper. Puisque nous mappons à un tableau de Language, nous le préciserons également dans le readValue() méthode:

// It's advised to use ObjectMapper as a singleton and reuse the instance
final ObjectMapper objectMapper = new ObjectMapper();
Language[] langs = objectMapper.readValue(json, Language[].class);

Vous pouvez également extraire les valeurs directement dans une liste, en utilisant Jackson TypeReference:

List langList = objectMapper.readValue(json, new TypeReference>(){});

Sans utiliser TypeReference<>, ce qui est conseillé, vous pouvez convertir le tableau en une liste avec toute autre approche à votre disposition, telle que:

List langList = new ArrayList(Arrays.asList(langs));

Et puis imprimez les valeurs:

langList.forEach(x -> System.out.println(x.toString()));

Cela se traduit par:

Language{name='Java', description='Java is a class-based, object-oriented programming language.'}
Language{name='Python', description='Python is an interpreted, high-level and general-purpose programming language.'}
Language{name='JS', description='JS is a programming language that conforms to the ECMAScript specification.'}

Lire JSON à partir d’un fichier

Nous ne traitons pas toujours JSON au format String. Souvent, le contenu provient d’un File. Heureusement, Jackson rend cette tâche aussi facile que la précédente, nous fournissons simplement le File à la readValue() méthode:

final ObjectMapper objectMapper = new ObjectMapper();
List langList = objectMapper.readValue(
        new File("langs.json"), 
        new TypeReference>(){});

langList.forEach(x -> System.out.println(x.toString()));

le langs.json le fichier contient:

[
  {
    "name": "Java",
    "description": "Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible."
  },
  {
    "name": "Python",
    "description": "Python is an interpreted, high-level and general-purpose programming language. Created by Guido van Rossum and first released in 1991."
  },
  {
    "name": "JS",
    "description": "JS is a programming language that conforms to the ECMAScript specification. JavaScript is high-level, often just-in-time compiled, and multi-paradigm."
  }
]

L’exécution de ce code entraîne:

Language{name='Java', description='Java is a class-based, object-oriented programming language that is designed to have as few implementation dependencies as possible.'}
Language{name='Python', description='Python is an interpreted, high-level and general-purpose programming language. Created by Guido van Rossum and first released in 1991.'}
Language{name='JS', description='JS is a programming language that conforms to the ECMAScript specification. JavaScript is high-level, often just-in-time compiled, and multi-paradigm.'}

Conclusion

Dans cet article, nous avons utilisé Jackson pour analyser et mapper les valeurs d’une chaîne JSON et d’un fichier dans un tableau et une liste Java.

Cela se fait via le readValue() méthode, en spécifiant le contenu JSON (String ou fichier) et en spécifiant le POJO auquel nous souhaitons mapper.


Close Menu