Maison > Java > javaDidacticiel > le corps du texte

Utiliser Jackson pour traiter les données JSON dans le développement d'API Java

WBOY
Libérer: 2023-06-19 09:10:02
original
1596 Les gens l'ont consulté

Avec le développement de la technologie Internet, les applications Web deviennent de plus en plus complexes, et de nombreuses applications nécessitent un échange de données au format JSON. Dans le développement Java, une manière courante de traiter les données JSON consiste à utiliser la bibliothèque Jackson. Cet article présentera le processus d'utilisation de la bibliothèque Jackson pour traiter les données JSON.

Qu'est-ce que Jackson ?

Jackson est une bibliothèque Java permettant de traiter les données au format JSON. Il fournit un moyen simple de sérialiser des objets Java au format JSON et de désérialiser les données JSON en objets Java. Il prend également en charge le mappage des flux de données JSON sur des objets Java et le mappage d'objets Java sur des flux de données JSON.

Sérialiser l'objet Java en JSON à l'aide de la bibliothèque Jackson

Tout d'abord, nous devons créer un objet Java et définir les noms des champs à l'aide d'annotations. Par exemple, nous avons créé un objet Java appelé Person :

class Person {
    @JsonProperty("name")
    private String mName;

    @JsonProperty("age")
    private int mAge;

    public Person(String name, int age) {
        mName = name;
        mAge = age;
    }

    // 省略 Getter 和 Setter 方法
}
Copier après la connexion

Dans le code ci-dessus, nous avons défini les noms JSON des champs "name" et "age" à l'aide de l'annotation @JsonProperty. Ensuite, nous pouvons utiliser la classe ObjectMapper pour sérialiser des objets Java au format JSON :

ObjectMapper mapper = new ObjectMapper();
Person person = new Person("John Smith", 30);
String jsonString = mapper.writeValueAsString(person);
Copier après la connexion

Dans le code ci-dessus, nous créons un objet ObjectMapper et convertissons l'objet Person en une chaîne au format JSON. Le résultat devrait ressembler à ceci :

{"name":"John Smith","age":30}
Copier après la connexion
Copier après la connexion

Prend en charge la sérialisation des champs à la demande

La bibliothèque Jackson prend également en charge le regroupement des champs en vues via l'annotation @JsonView. Cela permet d'afficher un seul ensemble de champs dans chaque vue. Voici un exemple :

class Views {
    static class Public {}
    static class Internal extends Public {}
}

class Person {
    @JsonProperty("name")
    @JsonView(Views.Public.class)
    private String mName;

    @JsonProperty("age")
    @JsonView(Views.Internal.class)
    private int mAge;

    public Person(String name, int age) {
        mName = name;
        mAge = age;
    }

    // 省略 Getter 和 Setter 方法
}
Copier après la connexion

Dans le code ci-dessus, nous définissons d'abord deux vues : Public et Internal. Le champ « nom » de l'objet Personne est associé à la vue Public, et le champ « âge » est associé à la vue Interne. Ensuite, nous pouvons utiliser la classe ObjectMapper pour sérialiser l'objet Java contenant une vue spécifique au format JSON :

ObjectMapper mapper = new ObjectMapper();
Person person = new Person("John Smith", 30);
String jsonStringPublic = mapper.writerWithView(Views.Public.class).writeValueAsString(person);
String jsonStringInternal = mapper.writerWithView(Views.Internal.class).writeValueAsString(person);
Copier après la connexion

Dans le code ci-dessus, nous sérialisons l'objet Person dans une chaîne au format JSON contenant la vue publique et la vue interne. Le résultat devrait ressembler à ceci :

Vue publique :

{"name":"John Smith"}
Copier après la connexion

Vue interne :

{"name":"John Smith","age":30}
Copier après la connexion
Copier après la connexion

Désérialisation des données JSON en objets Java à l'aide de la bibliothèque Jackson

Pour désérialiser les données JSON en objets Java, nous devons d'abord créer un objet Java. puis utilisez la classe ObjectMapper pour mapper le flux de données JSON à cet objet :

ObjectMapper mapper = new ObjectMapper();
Person person = mapper.readValue(jsonString, Person.class);
Copier après la connexion

Dans le code ci-dessus, nous créons un objet ObjectMapper et convertissons les données JSON en un objet Person. Notez que la chaîne JSON doit correspondre aux noms de champ de l'objet Person, sinon une exception sera levée.

Utilisez la bibliothèque Jackson pour traiter les flux de données JSON

Jackson prend également en charge le mappage des flux de données JSON sur des objets Java pour traiter les gros fichiers JSON ligne par ligne. Voici un exemple :

ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = mapper.getFactory();
JsonParser parser = factory.createParser(new File("testdata.json"));

while (parser.nextToken() != null) {
    if (parser.getCurrentToken() == JsonToken.START_OBJECT) {
        Person person = mapper.readValue(parser, Person.class);
        // 处理Person对象
    }
}
Copier après la connexion

Dans le code ci-dessus, nous créons d'abord un objet ObjectMapper et un objet JsonFactory. Ensuite, nous utilisons l'objet JsonFactory pour créer un objet JsonParser, qui se charge de lire le flux de données du fichier JSON ligne par ligne. Ensuite, nous pouvons utiliser la méthode ObjectMapper.readValue() pour mapper le flux de données JSON de la ligne actuelle dans un objet Person.

Résumé

Utiliser la bibliothèque Jackson pour traiter les données JSON est une méthode très pratique. Jackson fournit de nombreuses options et configurations qui nous permettent de sérialiser facilement des objets Java au format JSON, de désérialiser les données JSON en objets Java et de mapper les flux de données JSON en objets Java. Cela rend le traitement des données JSON assez simple.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal