La API de enlace de datos se utiliza para la conversión de JSON y el acceso utilizando atributos o usando anotación POJO (objeto Java normal). Aquí hay dos tipos de la misma.
Enlace de datos simples: convierta JSON de mapas Java, listas, cadenas, números, booleanos y objetos nulos.
Enlace de datos completos: convierta JSON a cualquier tipo de Java. Nos uniremos por separado en el próximo capítulo.
ObjectMapper lee/escribe JSON dos tipos de enlace de datos. La forma más conveniente de enlace de datos es para el analizador JAXB similar a XML.
Enlace de datos simple
El enlace simple de datos se refiere a la asignación de JSON a los tipos de datos de Java Core. La siguiente tabla enumera la relación entre el tipo JSON y el tipo Java.
Echemos un vistazo a la unión simple de manipulación de datos. Aquí mapearemos los tipos primitivos de Java directamente JSON y viceversa.
Cree un archivo de clase Java llamado JackSontester en el directorio c:/> jackson_workspace.
Archivo: JackSontester.java
import java.io.file; import java.io.ioException; import java.util.hashmap; import java.util.map; importar org.codehaus.jackson.jsoneException; import og.codehaus.jackson.jsonparseexception; import org.codehaus.jackson.map.jsonmappingmappingmapping; org.codehaus.jackson.map.objectMapper; public class JackSontester {public static void main (String args []) {JackSontester tester = new JackSontester (); intente {ObjectMapper mapper = new ObjectMapper (); MAP <String, Object> StudentDatamap = new Hashmap <String, Object> (); int [] Marks = {1,2,3}; Estudiante estudiante = nuevo estudiante (); estudiante.setage (10); Student.SetName ("Mahesh"); // Java Object studentDatamap.put ("estudiante", estudiante); // java string studentDatamap.put ("nombre", "Mahesh Kumar"); // java boolean studentdatamap.put ("verificado", boolean.false); // matriz studentDatamap.put ("Marcas", marcas); mapper.writevalue (nuevo archivo ("student.json"), studentDatamap); // resultado student.json // {// "estudiante": {"nombre": "mahesh", "edad": 10}, // "marcas": [1,2,3], // "verificado": falso, // "nombre": "Mahesh kumar" //} studentDatamap = mapper.ReadValue (nuevo archivo ("student.json"), map.cleSs); System.out.println (StudentDatamap.get ("Student")); System.out.println (studentDatamap.get ("nombre")); System.out.println (studentDatamap.get ("verificado")); System.out.println (StudentDatamap.get ("Marcas")); } 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
Verifique el resultado de salida
{name = Mahesh, edad = 10} Mahesh Kumarfalse [1, 2, 3] Enlace de datos completo
El enlace de datos completo se refiere a la asignación de JSON a cualquier objeto Java.
// Cree un ObjectMapper instanceObjectMapper mapper = new ObjectMapper (); // mapear contenido JSON a Student ObjectStudent Student = mapper.readValue (nuevo archivo ("student.json"), student.class); // mape el objeto de estudiante a json contentmapper.writevalue (nuevo archivo ("student.json"), estudiante);Echemos un vistazo a la unión simple de manipulación de datos. Aquí mapearemos los objetos Java directamente a JSON y viceversa.
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 org.codehaus.jackson.jsoneNationException; import org.codehaus.jackson.jsonparseException; import org.codehaus.jackson.map.jsonmappingexception; import void main (string args []) {JackSontester tester = new JackSontester (); intente {estudiante estudiante = nuevo estudiante (); estudiante.setage (10); Student.SetName ("Mahesh"); Tester.Writejson (estudiante); Student Student1 = tester.readjson (); System.out.println (Student1); } Catch (JSONParseException e) {E.PrintStackTrace (); } Catch (JSONMappingException e) {E.PrintStackTrace (); } catch (ioException e) {E.PrintStackTrace (); }} private void writejson (estudiante estudiante) lanza JSongenerationException, jsonmappingException, ioexception {ObjectMapper mapper = new ObjectMapper (); mapper.writevalue (nuevo archivo ("student.json"), estudiante); } Private Student Readjson () lanza jsonparseException, jsonmappingException, ioException {ObjectMapper mapper = new ObjectMapper (); Estudiante estudiante = mapper.readValue (nuevo archivo ("student.json"), student.class); Estudiante de regreso; }} estudiante de clase {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
Verifique que el código de copia se copie de la siguiente manera:
Estudiante [Nombre: Mahesh, Edad: 10]