亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定

 更新時間:2016年01月13日 11:42:16   投稿:goldensun  
這篇文章主要介紹了解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定,Jackson通常被用來實現(xiàn)Java對象和JSON數(shù)據(jù)的相互轉換功能,需要的朋友可以參考下

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

創(chuàng)建一個名為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

現(xiàn)在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出結果
復制代碼 代碼如下:

Student [ name: Mahesh, age: 10 ]

Jackson數(shù)據(jù)綁定泛型
在簡單的數(shù)據(jù)綁定中,我們使用String作為關鍵對象,并作為一個值對象映射類。相反,我們可以使用具體的Java對象和類型強制轉換到JSON使用。

考慮下面的例子使用一個類的UserData來保存用戶專用數(shù)據(jù)。

創(chuàng)建一個名為JacksonTester在Java類文件目錄 C:\>Jackson_WORKSPACE.

文件名: 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;
  } 
}

驗證輸出

使用javac編譯如下類:

復制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

現(xiàn)在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

Student [ name: Mahesh, age: 10 ]
Mahesh Kumar
false
[1, 2, 3]

相關文章

  • MyBatis5中Spring集成MyBatis事物管理

    MyBatis5中Spring集成MyBatis事物管理

    這篇文章主要介紹了MyBatis5中MyBatis集成Spring事物管理的相關資料,需要的朋友可以參考下
    2016-05-05
  • 關于JAVA中this的使用方法小結

    關于JAVA中this的使用方法小結

    現(xiàn)在讓大家看一個小例子,給你分享一下JAVA中“this”的用法,有需要的朋友可以參考一下
    2013-10-10
  • HttpServletRequest對象方法的用法小結

    HttpServletRequest對象方法的用法小結

    HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協(xié)議訪問服務器時,HTTP請求頭中的所有信息都封裝在這個對象中,開發(fā)人員通過這個對象的相關方法,即可以獲得客戶的這些信息
    2017-03-03
  • java JSONArray 遍歷方式(2種)

    java JSONArray 遍歷方式(2種)

    這篇文章主要介紹了java JSONArray 遍歷方式(2種),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • JAVA正則表達式及字符串的替換與分解相關知識總結

    JAVA正則表達式及字符串的替換與分解相關知識總結

    今天給大家?guī)淼氖顷P于Java的相關知識總結,文章圍繞著JAVA正則表達式及字符串的替換與分解展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 帶你重新認識Java動態(tài)代理

    帶你重新認識Java動態(tài)代理

    這篇文章主要為大家介紹了Java的動態(tài)代理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Java實現(xiàn)快速排序過程分析

    Java實現(xiàn)快速排序過程分析

    今天小編就為大家分享一篇關于Java實現(xiàn)快速排序過程分析,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • java命令調用虛擬機方法總結

    java命令調用虛擬機方法總結

    在本篇文章里我們給大家整理了關于java中的java命令如何調用虛擬機的方法和具體步驟,需要的朋友們跟著操作下。
    2019-05-05
  • Java利用數(shù)組隨機抽取幸運觀眾如何實現(xiàn)

    Java利用數(shù)組隨機抽取幸運觀眾如何實現(xiàn)

    這篇文章主要介紹了Java利用數(shù)組隨機抽取幸運觀眾如何實現(xiàn),需要的朋友可以參考下
    2014-02-02
  • SpringBoot中使用Jsoup爬取網站數(shù)據(jù)的方法

    SpringBoot中使用Jsoup爬取網站數(shù)據(jù)的方法

    這篇文章主要介紹了SpringBoot中使用Jsoup爬取網站數(shù)據(jù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06

最新評論