Heim  >  Artikel  >  Java  >  Analysieren Sie die Serialisierung und die generische Datenbindung von Objekten in der Jackson-Bibliothek von Java

Analysieren Sie die Serialisierung und die generische Datenbindung von Objekten in der Jackson-Bibliothek von Java

高洛峰
高洛峰Original
2017-01-18 10:48:361348Durchsuche

Serialisierung von Jackson-Objekten
Hier stellen wir die Serialisierung von Java-Objekten in einer JSON-Datei vor und lesen dann die JSON-Datei, um sie abzurufen und in ein Objekt zu konvertieren. In diesem Beispiel wird die Klasse Student erstellt. Erstellen Sie eine student.json-Datei, in der Studentenobjekte als JSON dargestellt werden.

Erstellen Sie eine Java-Klassendatei namens JacksonTester in C:>Jackson_WORKSPACE.

Datei: JacksonTester.java

import java.io.File;
import java.io.IOException;
 
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
 
public class JacksonTester {
  public static void main(String args[]){
   JacksonTester tester = new JacksonTester();
   try {
     Student student = new Student();
     student.setAge(10);
     student.setName("Mahesh");
     tester.writeJSON(student);
 
     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(Student student) throws JsonGenerationException, JsonMappingException, IOException{
   ObjectMapper mapper = new ObjectMapper(); 
   mapper.writeValue(new File("student.json"), student);
  }
 
  private Student readJSON() throws JsonParseException, JsonMappingException, IOException{
   ObjectMapper mapper = new ObjectMapper();
   Student student = mapper.readValue(new File("student.json"), Student.class);
   return student;
  }
}
 
class Student {
  private String name;
  private int age;
  public Student(){}
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public int getAge() {
   return age;
  }
  public void setAge(int age) {
   this.age = age;
  }
  public String toString(){
   return "Student [ name: "+name+", age: "+ age+ " ]";
  } 
}

Überprüfen Sie das Ergebnis

Verwenden javac, um die folgende Klasse zu kompilieren:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Führen Sie nun jacksonTester aus, um das Ergebnis anzuzeigen:

C:\Jackson_WORKSPACE>java JacksonTester

Überprüfen Sie das Ausgabeergebnis

Student [ name: Mahesh, age: 10 ]

Jackson-Datenbindungsgenerika
Bei der einfachen Datenbindung verwenden wir String als Schlüsselobjekt und als Wertobjekt-Zuordnungsklasse. Stattdessen können wir konkrete Java-Objekte verwenden und sie zur Verwendung in JSON umwandeln.


Betrachten Sie das folgende Beispiel, in dem eine Klasse UserData verwendet wird, um benutzerspezifische Daten zu speichern.

Erstellen Sie eine Datei mit dem Namen JacksonTester im Java-Klassendateiverzeichnis C:>Jackson_WORKSPACE.

Dateiname: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
 
public class JacksonTester {
  public static void main(String args[]){
   JacksonTester tester = new JacksonTester();
     try {
      ObjectMapper mapper = new ObjectMapper();
 
      Map userDataMap = new HashMap();
      UserData studentData = new UserData(); 
      int[] marks = {1,2,3};
 
      Student student = new Student();
      student.setAge(10);
      student.setName("Mahesh");
      // JAVA Object
      studentData.setStudent(student);
      // JAVA String
      studentData.setName("Mahesh Kumar");
      // JAVA Boolean
      studentData.setVerified(Boolean.FALSE);
      // Array
      studentData.setMarks(marks);
      TypeReference ref = new TypeReference>() { };
      userDataMap.put("studentData1", studentData);
      mapper.writeValue(new File("student.json"), userDataMap);
      //{
      //  "studentData1":
      // {
      // "student":
      // {
      //  "name":"Mahesh",
      //  "age":10
      //   },
      //   "name":"Mahesh Kumar",
      //   "verified":false,
      //   "marks":[1,2,3]
      //  }
      //}
      userDataMap = mapper.readValue(new File("student.json"), ref);
 
      System.out.println(userDataMap.get("studentData1").getStudent());
      System.out.println(userDataMap.get("studentData1").getName());
      System.out.println(userDataMap.get("studentData1").getVerified());
      System.out.println(Arrays.toString(userDataMap.get("studentData1").getMarks()));
   } catch (JsonParseException e) {
     e.printStackTrace();
   } catch (JsonMappingException e) {
     e.printStackTrace();
   } catch (IOException e) {
      e.printStackTrace();
   }
  }
}
 
class Student {
  private String name;
  private int age;
  public Student(){}
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public int getAge() {
   return age;
  }
  public void setAge(int age) {
   this.age = age;
  }
  public String toString(){
   return "Student [ name: "+name+", age: "+ age+ " ]";
  } 
}
 
class UserData {
  private Student student;
  private String name;
  private Boolean verified;
  private int[] marks;
 
  public UserData(){}
 
  public Student getStudent() {
   return student;
  }
  public void setStudent(Student student) {
   this.student = student;
  }
  public String getName() {
   return name;
  }
  public void setName(String name) {
   this.name = name;
  }
  public Boolean getVerified() {
   return verified;
  }
  public void setVerified(Boolean verified) {
   this.verified = verified;
  }
  public int[] getMarks() {
   return marks;
  }
  public void setMarks(int[] marks) {
   this.marks = marks;
  } 
}

Überprüfungsausgabe

Verwenden Sie Javac, um die folgende Klasse zu kompilieren:

C:\Jackson_WORKSPACE>javac JacksonTester.java

Führen Sie nun jacksonTester aus, um die Ergebnisse anzuzeigen:

C:\Jackson_WORKSPACE>java JacksonTester

Überprüfen Sie die Ausgabe

Student [ name: Mahesh, age: 10 ]
Mahesh Kumar
false
[1, 2, 3]

Weitere Artikel zur Analyse der Serialisierung und generischen Datenbindung von Objekten in der Jackson-Bibliothek von Java finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn