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!