Le premier programme de Jackson
Avant d'entrer dans les détails de l'apprentissage de la bibliothèque Jackson, jetons un coup d'œil aux fonctionnalités de l'opération d'application. Dans cet exemple, nous créons une classe étudiante. Une chaîne JSON sera créée et désérialisée dans l'objet de l'élève, puis sérialisé dans la chaîne JSON.
Créez un fichier de classe Java nommé JackSonter C: /> jackson_workspace.
Dossier: jacksonteter.java
Importer java.io.ioException; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmappingException; import org.codehaus.jackson.map.objectmapper; import org.codehaus.jackson.map.serializationConfig; Class public Jacksonter {public static vter args []) {objectMapper mapper = new ObjectMapper (); String jSontring = "{/" name / ": /" Mahesh / ", /" Age / ": 21}"; // Map JSON à Student Try {Student Student = Mapper.ReadValue (JSontring, Student.class); System.out.println (étudiant); MAPPER.Enable (SerializationConfig.Feature.indent_output); JSontring = Mapper.WriteValueAsString (étudiant); System.out.println (jsonstring); } catch (JSonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}} classe Student {Nom de chaîne privée; Âge privé; public Student () {} public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getage () {return âge; } public void Setage (int Age) {this.age = age; } public String toString () {return "Student [name:" + name + ", Âge:" + Age + "]"; }}Résultats de la vérification
Utilisez Javac pour compiler la classe suivante:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter pour voir le résultat:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Étudiant [Nom: Mahesh, Âge: 21] {"Nom": "Mahesh", "Age": 21}Étapes - Voici les étapes importantes à considérer ici.
Étape 1: Créez un objet ObjectMapper.
Créez un objet ObjectMapper. C'est un objet réutilisable. / /
La copie de code est la suivante:
ObjectMapper Mappeur = new ObjectMapper ();
Étape 2: désérialiser JSON à l'objet.
Utilisez la méthode readValue () pour obtenir de l'objet JSON. JSON String / Source est passé en tant que paramètre JSON String et Type d'objet.
// s'opposer à JSON ConversionStudent Student = mAper.readValue (JSontring, Student.class);
Étape 3: Sérialisez l'objet à JSON.
Utilisez la méthode WriteValueAsString () pour obtenir la représentation de chaîne JSON de l'objet.
// Objectif à la conversion JSON jsonstring = mapper.writeValueAsString (étudiant);
Modèle d'arbre Jackson
Le modèle d'arbre prépare la représentation de l'arborescence de mémoire du fichier JSON. ObjectMapper construit l'arbre de nœud JSONNode. C'est l'approche la plus flexible. Il est similaire au XML de l'analyseur Dom.
Créez un arbre à partir de JSON
ObjectMapper fournit un nœud racine d'arbre de pointeur après avoir lu JSON. Le nœud racine peut être utilisé pour traverser l'arbre complet. Considérez l'extrait de code suivant pour obtenir le nœud racine qui fournit la chaîne JSON.
// Créer un objectMapper instanceObjectMapper Mapper = new ObjectMapper (); String JSontring = "{/" name / ": /" Mahesh Kumar / ", /" Age / ": 21, /" Verified / ": false, /" marks / ": [100,90,85]}"; // créer une arbre à partir de jsonjsonnode rootnode = mappper.readtree (jSontring); Modèle d'arbre de traversée
Utilisez des chemins relatifs au nœud racine dans l'arborescence de traversée et traitez les données pour obtenir chaque nœud. Considérez l'extrait de code de code suivant de l'arborescence du nœud racine fournie.
JsonNode nameNode = rootNode.path ("name"); system.out.println ("name:" + nameNode.getTextValue ()); JsonNode marksnode = rootnode.path ("marques"); Iterator iterator = marksnode.getElements ();L'exemple crée un répertoire de fichiers appelé JackSonter dans la classe Java C: /> jackson_workspace.
Dossier: jacksonteter.java
Importer java.io.ioException; import java.util.iterator; import org.codehaus.jackson.jsonNode; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmappingexception; import org.codehaus.jackson.map.objectmapper; public jacksonter {public satic main (String args []) {JackSonter Tester = new JackSonTteter (); essayez {objectMapper Mappen = new ObjectMapper (); String JSontring = "{/" name / ": /" Mahesh Kumar / ", /" Age / ": 21, /" Verified / ": false, /" Marks / ": [100,90,85]}"; JsonNode rootNode = mappPer.readTree (jSontring); JsonNode nameNode = rootNode.path ("name"); System.out.println ("Name:" + nameNode.getTextValue ()); JSONNode Agenode = rootNode.Path ("Age"); System.out.println ("Age:" + Agenode.getIntValue ()); JSONNODE VerifiedNode = rootNode.path ("vérifié"); System.out.println ("Verified:" + (VerifiedNode.getBooleanValue ()? "Oui": "Non")); JsonNode marksnode = rootnode.path ("marques"); Iterator <JSonNode> iterator = marksnode.getElements (); System.out.print ("Marques: ["); while (iterator.hasnext ()) {jsonNode marks = iterator.next (); System.out.print (Marks.getIntValue () + ""); } System.out.println ("]"); } catch (JSonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}}Vérifiez le résultat de sortie
Utilisez Javac pour compiler la classe suivante:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter pour voir le résultat:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Nom: Mahesh Kumage: 21Verified: Nomarks: [100 90 85]
Conversion d'arbre à JSON
Dans cet exemple, nous avons utilisé JSONNode et l'avons écrit dans un fichier JSON et lu pour créer un arbre.
Créez un répertoire appelé JackSonter dans le fichier de classe Java c: /> jackson_workspace.
Dossier: jacksonteter.java
Importer java.io.file; import java.io.ioexception; import java.util.iterator; import org.codehaus.jackson.jsonnode; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmapperxception; import org.codehaus.jackson.map.obspsionnper; import org.codehaus.jackson.map.oBpjectMapper; Import Org.codehaus.jackson.map.OBPOSE; IMPORT ORG.CODEHAUS.JACKSON.MAP. org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectNode; public class jackSonter {public static void main (String args []) {jackSonteter Tester = new JackSonter (); essayez {objectMapper Mappen = new ObjectMapper (); JSONNODE rootNode = Mappe.CreateObjectNode (); JSONNODE MarksNode = MAPPER.CreateArrayNode (); ((ArrayNode) Marksnode) .Add (100); ((ArrayNode) marksnode) .add (90); ((ArrayNode) marksnode) .add (85); ((ObjectNode) rootNode) .put ("name", "mahesh kumar"); ((ObjectNode) rootNode) .put ("Age", 21); ((ObjectNode) rootNode) .put ("vérifié", false); ((ObjectNode) rootNode) .put ("Marks", marksnode); MAPPER.WRITEVALUE (nouveau fichier ("Student.json"), rootNode); rootNode = mapper.readTree (nouveau fichier ("Student.json")); JsonNode nameNode = rootNode.path ("name"); System.out.println ("Name:" + nameNode.getTextValue ()); JSONNode Agenode = rootNode.Path ("Age"); System.out.println ("Age:" + Agenode.getIntValue ()); JSONNODE VerifiedNode = rootNode.path ("vérifié"); System.out.println ("Verified:" + (VerifiedNode.getBooleanValue ()? "Oui": "Non")); JSONNode MarksNode1 = rootNode.Path ("Marks"); Iterator <JSonNode> iterator = marksnode1.getElements (); System.out.print ("Marques: ["); while (iterator.hasnext ()) {jsonNode marks = iterator.next (); System.out.print (Marks.getIntValue () + ""); } System.out.println ("]"); } catch (JSonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}}Résultats de la vérification
Utilisez Javac pour compiler la classe suivante:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter pour voir le résultat:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Nom: Mahesh Kumar
Âge: 21 ans
Vérifié: Non
Marques: [100 90 85]
Conversion de Tree en Java objet
Dans cet exemple, nous avons utilisé JSONNode et l'avons écrit dans un fichier JSON et lu, puis avons converti un objet étudiant pour créer une arborescence.
Créez un répertoire appelé JackSonter dans le fichier de classe Java c: /> jackson_workspace.
Dossier: jacksonteter.java
Importer java.io.file; import java.io.ioexception; import java.util.arrays; import org.codehaus.jackson.jsonnode; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmapping; org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectNode; public class jackSonter {public static void main (String args []) {jackSonteter Tester = new JackSonter (); essayez {objectMapper Mappen = new ObjectMapper (); JSONNODE rootNode = Mappe.CreateObjectNode (); JSONNODE MarksNode = MAPPER.CreateArrayNode (); ((ArrayNode) Marksnode) .Add (100); ((ArrayNode) marksnode) .add (90); ((ArrayNode) marksnode) .add (85); ((ObjectNode) rootNode) .put ("name", "mahesh kumar"); ((ObjectNode) rootNode) .put ("Age", 21); ((ObjectNode) rootNode) .put ("vérifié", false); ((ObjectNode) rootNode) .put ("Marks", marksnode); MAPPER.WRITEVALUE (nouveau fichier ("Student.json"), rootNode); rootNode = mapper.readTree (nouveau fichier ("Student.json")); Student Student = Mapper.Treetovalue (RootNode, Student.class); System.out.println ("Name:" + Student.getName ()); System.out.println ("Age:" + Student.getage ()); System.out.println ("Verified:" + (Student.isverified ()? "Oui": "Non")); System.out.println ("Marks:" + Arrays.ToString (Student.GetMarks ())); } catch (JSonParseException e) {e.printStackTrace (); } catch (jsonmappingException e) {e.printStackTrace (); } catch (ioException e) {e.printStackTrace (); }}} classe Student {String Name; en âge; booléen vérifié; Int [] marques; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public int getage () {return âge; } public void Setage (int Age) {this.age = age; } public boolean isverified () {return vérifié; } public void setVerified (boolean vérifié) {this.verified = vérifié; } public int [] getmarks () {marques de retour; } public void setmarks (int [] marques) {this.marks = marks; }}Résultats de la vérification
Utilisez Javac pour compiler la classe suivante:
La copie de code est la suivante:
C: / jackson_workspace> javac jacksonter.java
Maintenant, exécutez JackSonter pour voir le résultat:
La copie de code est la suivante:
C: / jackson_workspace> java jacksonteter
Vérifiez la sortie
Nom: Mahesh Kumage: 21Verified: Nomarks: [100 90 85]