El primer programa de Jackson
Antes de ingresar los detalles de aprender la Biblioteca Jackson, echemos un vistazo a las características de la operación de la aplicación. En este ejemplo, creamos una clase de estudiante. Se creará una cadena JSON y se deserializará al objeto del alumno, y luego se serializó a la cadena JSON.
Cree un archivo de clase Java llamado JackSontester c:/> Jackson_workspace.
Archivo: JackSontester.java
import java.io.ioException; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmappingexception; import org.codehaus.jackson.map.objectMapper; import ogodhaus.jackson.map.map.serialization config; public classicsontester {PublicSontester {STRISTETAT (STRING STING STAINT (STRISTAT (STRISTAT (STRIF args []) {ObjectMapper mapper = new ObjectMapper (); String jsonstring = "{/" name/":/" mahesh/",/" edad/": 21}"; // mapear json a estudiante try {student student = mApper.ReadValue (jsonstring, student.class); System.out.println (estudiante); mapper.enable (SerializationConfig.Feature.indent_output); jsonstring = mApper.WriteValueAsString (estudiante); System.out.println (jsonstring); } Catch (JSONParseException e) {E.PrintStackTrace (); } Catch (JSONMappingException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }}} Clase Student {Nombre de cadena privada; edad privada int; Public Student () {} public String getName () {Return Name; } public void setName (nombre de cadena) {this.name = name; } public int getAge () {return Age; } public void setAge (int Age) {this.age = edad; } public String toString () {return "Student [nombre:"+ nombre+ ", edad:"+ edad+ "]"; }}Resultados de verificación
Use Javac para compilar la siguiente clase:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora corre JackSontester para ver el resultado:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Estudiante [Nombre: Mahesh, edad: 21] {"Nombre": "Mahesh", "Age": 21}Pasos: aquí están los pasos importantes a considerar aquí.
Paso 1: cree un objeto ObjectMapper.
Crea un objeto ObjectMapper. Es un objeto reutilizable. /
La copia del código es la siguiente:
ObjectMapper mapper = new ObjectMapper ();
Paso 2: Deserializa a JSON al objeto.
Use el método ReadValue () para obtener del objeto JSON. JSON String/Source se pasa como parámetro JSON String y Tipo de objeto.
// Objetar a JSON ConversionStudent Student = MAPPER.ReadValue (JSonstring, Student.Class);
Paso 3: Serializa el objeto a JSON.
Use el método WriteValueAsString () para obtener la representación de cadena JSON del objeto.
// OBJETO A JSON CONVERSIÓN JSONSTRING = MAPPER.WRITEVALUEASString (estudiante);
Modelo de árbol de Jackson
El modelo de árbol prepara la representación del árbol de memoria del archivo JSON. ObjectMapper construye el árbol del nodo JSONNODE. Este es el enfoque más flexible. Es similar al XML del analizador DOM.
Crea un árbol de JSON
ObjectMapper proporciona un nodo raíz de árbol de puntero después de leer JSON. El nodo raíz se puede usar para atravesar el árbol completo. Considere el siguiente fragmento de código para obtener el nodo raíz que proporciona la cadena JSON.
// Cree un ObjectMapper instanceObjectMapper mapper = new ObjectMapper (); String JSonstring = "{/" name/":/" Mahesh Kumar/",/" Age/": 21,/" Verified/": false,/" Marks/": [100,90,85]}" "; // Crear árbol de jsonjsonnode rootnode = mappper.readtree (jsonstring); Modelo de árbol de transversal
Use rutas relativas al nodo raíz en el árbol de transversal y procese los datos para obtener cada nodo. Considere el siguiente código de fragmento de código del árbol del nodo raíz proporcionado.
JSONNODE namenode = rootnode.path ("name"); system.out.println ("name:"+ namenode.getTextValue ()); Jsonnode marksnode = rootnode.path ("marcas"); Iterador iterator = marksnode.getElements ();El ejemplo crea un directorio de archivos llamado JackSontester en Java Clase C:/> Jackson_workspace.
Archivo: JackSontester.java
import java.io.ioexception; import java.util.iterator; import org.codehaus.jackson.jsonnode; import og.codehaus.jackson.jsonparseexception; import org.codehaus.jackson.map.jsonmappingexception; import.codehaus.jackson.map.objectMapper; Main (String Args []) {JackSontester tester = new JackSontester (); intente {ObjectMapper mapper = new ObjectMapper (); String jsonstring = "{/" name/":/" mahesh kumar/",/" edad/": 21,/" verificado/": falso,/" marcas/": [100,90,85]}"; Jsonnode rootNode = mappper.readtree (jsonstring); Jsonnode namenode = rootnode.path ("nombre"); System.out.println ("Nombre:"+ namenode.gettextValue ()); Jsonnode agenode = rootnode.path ("edad"); System.out.println ("Age:" + agenode.getIntValue ()); Jsonnode verifiedNode = rootnode.path ("verificado"); System.out.println ("Verificado:" + (VerifiedNode.getBooleanValue ()? "Sí": "No")); Jsonnode marksnode = rootnode.path ("marcas"); Iterator <jsonnode> iterator = marksnode.getElements (); System.out.print ("Marcas: ["); 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 (); }}}Verifique el resultado de salida
Use Javac para compilar la siguiente clase:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora corre JackSontester para ver el resultado:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Nombre: Mahesh Kumarage: 21 VERIFIED: Nomarks: [100 90 85]
Conversión de árbol a JSON
En este ejemplo, hemos usado JSONNODE y lo hemos escrito en un archivo JSON y leemos de nuevo para crear un árbol.
Cree un directorio llamado JackSontester en el archivo de clase Java c:/> jackson_workspace.
Archivo: JackSontester.java
import java.io.file; import java.io.ioException; import java.util.iterator; import org.codehaus.jackson.jsonnode; import og.codehaus.jackson.jsonparseexception; import org.codehaus.jackson.map.jsonmappingxception; import org.codehaus.jackson.jackson.maper; org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectNode; public class JackSontester {public static void main (string args []) {JackSontester tester = new JackSontester (); intente {ObjectMapper mapper = new ObjectMapper (); Jsonnode rootNode = mApper.CreateObjectNode (); JSONNODE MarkSNode = mApper.CreatEarRAyNode (); ((ArrayNode) MarkSnode) .Add (100); ((ArrayNode) MarkSnode) .Add (90); ((ArrayNode) MarkSnode) .Add (85); ((ObjectNode) rootNode) .put ("nombre", "Mahesh Kumar"); ((ObjectNode) rootNode) .put ("edad", 21); ((ObjectNode) rootNode) .put ("verificado", falso); ((ObjectNode) rootNode) .put ("Marks", MarkSnode); mApper.WriteValue (nuevo archivo ("student.json"), rootnode); rootNode = mApper.readtree (nuevo archivo ("student.json")); Jsonnode namenode = rootnode.path ("nombre"); System.out.println ("Nombre:"+ namenode.gettextValue ()); Jsonnode agenode = rootnode.path ("edad"); System.out.println ("Age:" + agenode.getIntValue ()); Jsonnode verifiedNode = rootnode.path ("verificado"); System.out.println ("Verificado:" + (VerifiedNode.getBooleanValue ()? "Sí": "No")); Jsonnode marksnode1 = rootnode.path ("marcas"); Iterator <jsonnode> iterator = marksnode1.getElements (); System.out.print ("Marcas: ["); 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 (); }}}Resultados de verificación
Use Javac para compilar la siguiente clase:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora corre JackSontester para ver el resultado:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Nombre: Mahesh Kumar
Edad: 21
Verificado: No
Marcas: [100 90 85]
Conversión del árbol al objeto Java
En este ejemplo, hemos usado JSONNODE y lo hemos escrito en un archivo JSON y leemos de nuevo y luego convertimos un objeto de estudiante para crear un árbol.
Cree un directorio llamado JackSontester en el archivo de clase Java c:/> jackson_workspace.
Archivo: JackSontester.java
import java.io.file; import java.io.ioexception; import java.util.arras; import org.codehaus.jackson.jsonnode; import og.codehaus.jackson.jsonparseexception; import org.codehaus.jackson.map.jsonmappingxception; importar org.codehaus.jackson.jackson.maper; org.codehaus.jackson.node.arraynode; import org.codehaus.jackson.node.objectNode; public class JackSontester {public static void main (string args []) {JackSontester tester = new JackSontester (); intente {ObjectMapper mapper = new ObjectMapper (); Jsonnode rootNode = mApper.CreateObjectNode (); JSONNODE MarkSNode = mApper.CreatEarRAyNode (); ((ArrayNode) MarkSnode) .Add (100); ((ArrayNode) MarkSnode) .Add (90); ((ArrayNode) MarkSnode) .Add (85); ((ObjectNode) rootNode) .put ("nombre", "Mahesh Kumar"); ((ObjectNode) rootNode) .put ("edad", 21); ((ObjectNode) rootNode) .put ("verificado", falso); ((ObjectNode) rootNode) .put ("Marks", MarkSnode); mApper.WriteValue (nuevo archivo ("student.json"), rootnode); rootNode = mApper.readtree (nuevo archivo ("student.json")); Estudiante estudiante = mapper.treeTovalue (rootnode, student.class); System.out.println ("Nombre:"+ student.getName ()); System.out.println ("Age:" + student.getage ()); System.out.println ("Verificado:" + (Student.isverified ()? "Sí": "No")); System.out.println ("Marcas:"+Arrays.ToString (Student.getMarks ())); } Catch (JSONParseException e) {E.PrintStackTrace (); } Catch (JSONMappingException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }}} Clase Student {Nombre de cadena; int Age; booleano verificado; int [] marcas; public String getName () {nombre de retorno; } public void setName (nombre de cadena) {this.name = name; } public int getAge () {return Age; } public void setAge (int Age) {this.age = edad; } public boolean isverified () {return verificado; } public void setverified (boolean verificado) {this.verified = verificado; } public int [] getMarks () {return Marks; } public void setMarks (int [] marks) {this.marks = marks; }}Resultados de verificación
Use Javac para compilar la siguiente clase:
La copia del código es la siguiente:
C:/jackson_workspace> javac jacksontester.java
Ahora corre JackSontester para ver el resultado:
La copia del código es la siguiente:
C:/jackson_workspace> java jacksontester
Verificar la salida
Nombre: Mahesh Kumarage: 21 VERIFIED: Nomarks: [100 90 85]