Jackson對象序列化

這裏將介紹將Java對象序列化到一個JSON文件,然後再讀取JSON文件獲取轉換爲對象。在這個例子中,創建了Student類。創建將有學生對象以JSON表示在一個student.json文件。

創建一個名爲JacksonTester在Java類文件在 C:\>Jackson_WORKSPACE.

文件: 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+ " ]";
}
}

驗證結果

使用 javac 編譯如下類:

C:\Jackson_WORKSPACE>javac JacksonTester.java

現在運行jacksonTester看到的結果:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出結果

Student [ name: Mahesh, age: 10 ]