Sérialisation d'objets Jackson
Nous allons introduire ici la sérialisation d'objets Java dans un fichier JSON, puis la lecture du fichier JSON pour l'obtenir et le convertir en objet. Dans cet exemple, la classe Student est créée. Créez un fichier student.json dans lequel les objets étudiants seront représentés en JSON.
Créez un fichier de classe Java appelé JacksonTester dans C:>Jackson_WORKSPACE.
Fichier : 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+ " ]"; } }
Vérifiez le résultat
Utiliser javac pour compiler la classe suivante :
C:\Jackson_WORKSPACE>javac JacksonTester.java
Exécutez maintenant jacksonTester pour voir le résultat :
C:\Jackson_WORKSPACE>java JacksonTester
Vérifiez le résultat de sortie
Student [ name: Mahesh, age: 10 ]
Génériques de liaison de données Jackson
Dans la liaison de données simple, nous utilisons String comme objet clé et comme classe de mappage d'objet de valeur. Au lieu de cela, nous pouvons utiliser des objets Java concrets et les transtyper en JSON pour les utiliser.
Considérons l'exemple suivant utilisant une classe UserData pour enregistrer des données spécifiques à l'utilisateur.
Créez un fichier nommé JacksonTester dans le répertoire de fichiers de classe Java C:>Jackson_WORKSPACE.
Nom du fichier : 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; } }
Sortie de vérification
Utilisez javac pour compiler la classe suivante :
C:\Jackson_WORKSPACE>javac JacksonTester.java
Exécutez maintenant jacksonTester pour voir les résultats :
C:\Jackson_WORKSPACE>java JacksonTester
Vérifiez la sortie
Student [ name: Mahesh, age: 10 ] Mahesh Kumar false [1, 2, 3]
Pour plus d'articles qui analysent la sérialisation et la liaison générique de données des objets dans la bibliothèque Jackson de Java, veuillez faire attention au site Web PHP chinois !