最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

實(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)文章

  • 關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType對(duì)Filter配置的影響

    關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType

    這篇文章主要介紹了關(guān)于request.getRequestDispatcher().forward()的妙用及DispatcherType對(duì)Filter配置的影響,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Mybatis集成Spring的實(shí)例代碼_動(dòng)力節(jié)點(diǎn)Java 學(xué)院整理

    Mybatis集成Spring的實(shí)例代碼_動(dòng)力節(jié)點(diǎn)Java 學(xué)院整理

    這篇文章主要介紹了Mybatis集成Spring的實(shí)例代碼,需要的朋友可以參考下
    2017-09-09
  • Java如何基于okhttp請(qǐng)求SSE接口流式返回詳解

    Java如何基于okhttp請(qǐng)求SSE接口流式返回詳解

    對(duì)于流式返回,Spring Boot提供了兩種不同的方式,下面這篇文章主要給大家介紹了關(guān)于Java如何基于okhttp請(qǐng)求SSE接口流式返回的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Java如何獲取HttpServletRequest請(qǐng)求參數(shù)

    Java如何獲取HttpServletRequest請(qǐng)求參數(shù)

    我們常需要接口接收第三方推送的數(shù)據(jù),由于第三方可能不具備開發(fā)能力,我們需要自行解析推送的數(shù)據(jù)格式,通過HttpServletRequest,我們可以解析字符串、JSON、XML以及文件等多種數(shù)據(jù)類型,本文介紹了如何在Java中使用HttpServletRequest獲取請(qǐng)求參數(shù),感興趣的朋友一起看看吧
    2024-11-11
  • SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟

    SpringBoot?2.x整合Log4j2日志的詳細(xì)步驟

    log4j2優(yōu)越的性能其原因在于log4j2使用了LMAX,一個(gè)無鎖的線程間通信庫(kù)代替了,logback和log4j之前的隊(duì)列,并發(fā)性能大大提升,下面這篇文章主要給大家介紹了關(guān)于SpringBoot?2.x整合Log4j2日志的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Java中對(duì)AtomicInteger和int值在多線程下遞增操作的測(cè)試

    Java中對(duì)AtomicInteger和int值在多線程下遞增操作的測(cè)試

    這篇文章主要介紹了Java中對(duì)AtomicInteger和int值在多線程下遞增操作的測(cè)試,本文得出AtomicInteger操作 與 int操作的效率大致相差在50-80倍上下的結(jié)論,需要的朋友可以參考下
    2014-09-09
  • SpringBoot集成JWT實(shí)現(xiàn)Token登錄驗(yàn)證的示例代碼

    SpringBoot集成JWT實(shí)現(xiàn)Token登錄驗(yàn)證的示例代碼

    隨著技術(shù)的發(fā)展,分布式web應(yīng)用的普及,通過session管理用戶登錄狀態(tài)成本越來越高,因此慢慢發(fā)展成為token的方式做登錄身份校驗(yàn),本文就來介紹一下SpringBoot集成JWT實(shí)現(xiàn)Token登錄驗(yàn)證的示例代碼,感興趣的可以了解一下
    2023-12-12
  • 基于java解析JSON的三種方式詳解

    基于java解析JSON的三種方式詳解

    這篇文章主要介紹了基于java解析JSON的三種方式,結(jié)合實(shí)例形式詳細(xì)分析了json解析的原理與GSON、FastJSON等常用解析操作技巧,需要的朋友可以參考下
    2016-12-12
  • 基于Spring MVC的文件上傳和下載實(shí)現(xiàn)方法

    基于Spring MVC的文件上傳和下載實(shí)現(xiàn)方法

    在Web應(yīng)用程序中,文件上傳和下載是常見的功能,Spring MVC框架提供了方便的方式來實(shí)現(xiàn)這些功能,本文將介紹如何使用Spring MVC實(shí)現(xiàn)文件上傳和下載,需要的朋友可以參考下
    2023-05-05
  • mybatisplus 的SQL攔截器實(shí)現(xiàn)關(guān)聯(lián)查詢功能

    mybatisplus 的SQL攔截器實(shí)現(xiàn)關(guān)聯(lián)查詢功能

    大家都知道m(xù)ybatisplus不支持關(guān)聯(lián)查詢,后來學(xué)習(xí)研究發(fā)現(xiàn)mybatisplus的SQL攔截器可以實(shí)現(xiàn)這一操作,下面小編給大家分享我的demo實(shí)現(xiàn)基本的關(guān)聯(lián)查詢功能沒有問題,對(duì)mybatisplus關(guān)聯(lián)查詢相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06

最新評(píng)論

昔阳县| 阳新县| 乌拉特前旗| 玉树县| 磴口县| 沂南县| 和龙市| 池州市| 连城县| 嘉祥县| 麻江县| 酒泉市| 邯郸市| 兴化市| 涟水县| 定远县| 固镇县| 平度市| 惠州市| 邵东县| 雷山县| 潢川县| 汉寿县| 响水县| 乌恰县| 德令哈市| 乃东县| 中江县| 万宁市| 衡南县| 绩溪县| 星座| 湾仔区| 文化| 民勤县| 筠连县| 岳阳市| 临潭县| 武平县| 六盘水市| 鹤峰县|