欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

實(shí)例解析Java的Jackson庫(kù)中的數(shù)據(jù)綁定

 更新時(shí)間:2016年01月13日 11:26:00   投稿:goldensun  
這篇文章主要介紹了Java的Jackson庫(kù)中的數(shù)據(jù)綁定,這里分為通常的簡(jiǎn)單數(shù)據(jù)綁定與全數(shù)據(jù)綁定兩種情況來講,需要的朋友可以參考下

數(shù)據(jù)綁定API用于JSON轉(zhuǎn)換和使用屬性訪問或使用注解POJO(普通Java對(duì)象)。以下是它的兩個(gè)類型。

簡(jiǎn)單數(shù)據(jù)綁定 - 轉(zhuǎn)換JSON,從Java Maps, Lists, Strings, Numbers, Booleans 和 null 對(duì)象。

完整數(shù)據(jù)綁定 - 轉(zhuǎn)換JSON到任何JAVA類型。我們將在下一章分別綁定。

ObjectMapper讀/寫JSON兩種類型的數(shù)據(jù)綁定。數(shù)據(jù)綁定是最方便的方式是類似XML的JAXB解析器。

簡(jiǎn)單的數(shù)據(jù)綁定
簡(jiǎn)單的數(shù)據(jù)綁定是指JSON映射到Java核心數(shù)據(jù)類型。下表列出了JSON類型和Java類型之間的關(guān)系。

2016113113244100.png (629×269)

讓我們來看看簡(jiǎn)單的數(shù)據(jù)操作綁定。在這里,我們將映射JAVA基本類型直接JSON,反之亦然。

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

File: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
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;

public class JacksonTester {
  public static void main(String args[]){
   JacksonTester tester = new JacksonTester();
     try {
      ObjectMapper mapper = new ObjectMapper();

      Map<String,Object> studentDataMap = new HashMap<String,Object>(); 
      int[] marks = {1,2,3};

      Student student = new Student();
      student.setAge(10);
      student.setName("Mahesh");
      // JAVA Object
      studentDataMap.put("student", student);
      // JAVA String
      studentDataMap.put("name", "Mahesh Kumar");   
      // JAVA Boolean
      studentDataMap.put("verified", Boolean.FALSE);
      // Array
      studentDataMap.put("marks", marks);

      mapper.writeValue(new File("student.json"), studentDataMap);
      //result student.json
  //{ 
      //  "student":{"name":"Mahesh","age":10},
      //  "marks":[1,2,3],
      //  "verified":false,
      //  "name":"Mahesh Kumar"
      //}
      studentDataMap = mapper.readValue(new File("student.json"), Map.class);

      System.out.println(studentDataMap.get("student"));
      System.out.println(studentDataMap.get("name"));
      System.out.println(studentDataMap.get("verified"));
      System.out.println(studentDataMap.get("marks"));
   } 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+ " ]";
  } 
}

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

使用javac編譯如下類:

復(fù)制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

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

C:\Jackson_WORKSPACE>java JacksonTester

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

{name=Mahesh, age=10}
Mahesh Kumar
false
[1, 2, 3]

全數(shù)據(jù)綁定
完全數(shù)據(jù)綁定是指JSON映射到任何Java對(duì)象。

//Create an ObjectMapper instance
ObjectMapper mapper = new ObjectMapper(); 
//map JSON content to Student object
Student student = mapper.readValue(new File("student.json"), Student.class);
//map Student object to JSON content
mapper.writeValue(new File("student.json"), student);

讓我們來看看簡(jiǎn)單的數(shù)據(jù)操作綁定。在這里,我們將直接映射Java對(duì)象到JSON,反之亦然。

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

File: 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編譯如下類:

復(fù)制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

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

C:\Jackson_WORKSPACE>java JacksonTester

驗(yàn)證輸出
復(fù)制代碼 代碼如下:

Student [ name: Mahesh, age: 10 ]

相關(guān)文章

  • Java SpringBoot+vue+實(shí)戰(zhàn)項(xiàng)目詳解

    Java SpringBoot+vue+實(shí)戰(zhàn)項(xiàng)目詳解

    這篇文章主要介紹了SpringBoot+VUE實(shí)現(xiàn)前后端分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-09-09
  • SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf

    SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf

    這篇文章主要介紹了SpringBoot如何實(shí)現(xiàn)word文檔轉(zhuǎn)pdf,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別

    關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別

    這篇文章主要介紹了關(guān)于兩個(gè)BeanUtils.copyProperties()的用法及區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • MyBatis-Plus動(dòng)態(tài)返回實(shí)體類示例詳解

    MyBatis-Plus動(dòng)態(tài)返回實(shí)體類示例詳解

    這篇文章主要為大家介紹了MyBatis-Plus動(dòng)態(tài)返回實(shí)體類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳

    關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳

    這篇文章主要介紹了關(guān)于Java從本地文件復(fù)制到網(wǎng)絡(luò)文件上傳,File?和?IO?流其實(shí)是很相似的,都是將文件從一個(gè)地方轉(zhuǎn)移到另一個(gè)地方,這也是流的特點(diǎn)之一,需要的朋友可以參考下
    2023-04-04
  • JAVA實(shí)現(xiàn)經(jīng)典掃雷游戲的示例代碼

    JAVA實(shí)現(xiàn)經(jīng)典掃雷游戲的示例代碼

    windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本程序參考《掃雷》的規(guī)則進(jìn)行了簡(jiǎn)化,用java語言實(shí)現(xiàn),采用了swing技術(shù)進(jìn)行了界面化處理。感興趣的可以學(xué)習(xí)一下
    2022-01-01
  • 使用springboot對(duì)外部靜態(tài)資源文件的處理操作

    使用springboot對(duì)外部靜態(tài)資源文件的處理操作

    這篇文章主要介紹了使用springboot對(duì)外部靜態(tài)資源文件的處理操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • ES模糊查詢失效的坑以及解決方案

    ES模糊查詢失效的坑以及解決方案

    ES的查詢?cè)硎前捶衷~建立索引,根據(jù)要保存的內(nèi)容先分詞,然后按照分詞的結(jié)果建立索引,這篇文章主要給大家介紹了關(guān)于ES模糊查詢失效的坑及解決方案的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • org.apache.ibatis.binding.BindingException異常報(bào)錯(cuò)原因以及詳細(xì)解決方案

    org.apache.ibatis.binding.BindingException異常報(bào)錯(cuò)原因以及詳細(xì)解決方案

    這篇文章主要給大家介紹了關(guān)于org.apache.ibatis.binding.BindingException異常報(bào)錯(cuò)原因以及詳細(xì)解決方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • 使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    使用graalvm為帶有反射功能的java代碼生成native?image的示例詳解

    graalvm讓native鏡像支持反射的關(guān)鍵是利用json提前告訴它哪些類的哪些方法會(huì)被反射調(diào)用,然后它就能力在運(yùn)行時(shí)支持反射了,這篇文章主要介紹了如何使用graalvm為帶有反射功能的java代碼生成native?image,需要的朋友可以參考下
    2024-02-02

最新評(píng)論