鍍金池/ 教程/ Java/ Jackson對(duì)象序列化
Jackson JsonGenerator類
Jackson樹(shù)模型
Jackson環(huán)境安裝設(shè)置
Jackson教程
Jackson數(shù)據(jù)綁定
Jackson第一個(gè)程序
Jackson JsonParser類
Jackson ObjectMapper類
Jackson流式API
Jackson數(shù)據(jù)綁定泛型
Jackson對(duì)象序列化
Jackson全數(shù)據(jù)綁定

Jackson對(duì)象序列化

這里將介紹將Java對(duì)象序列化到一個(gè)JSON文件,然后再讀取JSON文件獲取轉(zhuǎn)換為對(duì)象。在這個(gè)例子中,創(chuàng)建了Student類。創(chuàng)建將有學(xué)生對(duì)象以JSON表示在一個(gè)student.json文件。

創(chuàng)建一個(gè)名為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+ " ]";
   }	
}

驗(yàn)證結(jié)果

使用 javac 編譯如下類:

C:\Jackson_WORKSPACE>javac JacksonTester.java

現(xiàn)在運(yùn)行jacksonTester看到的結(jié)果:

C:\Jackson_WORKSPACE>java JacksonTester

驗(yàn)證輸出結(jié)果

Student [ name: Mahesh, age: 10 ]