Jackson - 对象序列化

  • 简述

    让我们将一个java对象序列化为一个 json 文件,然后读取该 json 文件以取回该对象。在此示例中,我们创建了学生类。我们将创建一个学生.json 文件,该文件将具有学生对象的 json 表示形式。
    C:\>Jackson_WORKSPACE 中创建一个名为“JacksonTester”的 Java 类文件。
    文件: JacksonTester.java
    import java.io.File;
    import java.io.IOException;
    import com.fasterxml.jackson.core.JsonGenerationException;
    import com.fasterxml.jackson.core.JsonParseException;
    import com.fasterxml.jackson.databind.JsonMappingException;
    import com.fasterxml.jackson.databind.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+ " ]";
       }  
    }
    
    验证结果
    使用 javac 编译器编译类,如下所示:
    
    C:\Jackson_WORKSPACE>javac JacksonTester.java
    
    现在运行杰克逊测试器以查看结果:
    
    C:\Jackson_WORKSPACE>java JacksonTester
    
    验证输出
    
    Student [ name: Mahesh, age: 10 ]