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

Java的Jackson庫的使用及其樹模型的入門學習教程

 更新時間:2016年01月13日 11:08:20   投稿:goldensun  
這篇文章主要介紹了Java的Jackson庫的使用及其樹模型入門學習教程,Jackson庫通常被用來作Java對象和JSON的互相轉換,需要的朋友可以參考下

Jackson第一個程序
在進入學習jackson庫的細節(jié)之前,讓我們來看看應用程序操作功能。在這個例子中,我們創(chuàng)建一個Student類。將創(chuàng)建一個JSON字符串學生的詳細信息,并將其反序列化到學生的對象,然后將其序列化到JSON字符串。

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

文件: JacksonTester.java

import java.io.IOException;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.SerializationConfig;

public class JacksonTester {
  public static void main(String args[]){
   ObjectMapper mapper = new ObjectMapper();
   String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";

   //map json to student
   try {
     Student student = mapper.readValue(jsonString, Student.class);
     System.out.println(student);
     
     mapper.enable(SerializationConfig.Feature.INDENT_OUTPUT);
     jsonString = mapper.writeValueAsString(student);
     System.out.println(jsonString);

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

驗證結果

使用javac編譯如下類:

復制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

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

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

Student [ name: Mahesh, age: 21 ]
{
 "name" : "Mahesh",
 "age" : 21
}

步驟 - 需要記住
以下是這里要考慮的重要步驟。

第1步:創(chuàng)建ObjectMapper對象。
創(chuàng)建ObjectMapper對象。它是一個可重復使用的對象。\

復制代碼 代碼如下:

ObjectMapper mapper = new ObjectMapper();


第2步:反序列化JSON到對象。
從JSON對象使用readValue()方法來獲取。通過JSON字符串和對象類型作為參數(shù)JSON字符串/來源。

//Object to JSON Conversion
Student student = mapper.readValue(jsonString, Student.class);

第3步:序列化對象到JSON。
使用writeValueAsString()方法來獲取對象的JSON字符串表示。

//Object to JSON Conversion 
jsonString = mapper.writeValueAsString(student);

Jackson樹模型
樹模型準備JSON文件的內存樹表示。 ObjectMapper構建JsonNode節(jié)點樹。這是最靈活的方法。它類似于DOM解析器的XML。

從JSON創(chuàng)建樹
ObjectMapper提供一個指針樹的根節(jié)點在讀取JSON之后。根節(jié)點可用于遍歷完全樹??紤]下面的代碼片段獲得提供JSON字符串的根節(jié)點。

//Create an ObjectMapper instance
ObjectMapper mapper = new ObjectMapper(); 
String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
//create tree from JSON
JsonNode rootNode = mapper.readTree(jsonString);

遍歷樹模型
使用相對路徑來根節(jié)點在遍歷樹,并處理該數(shù)據(jù)得到的每個節(jié)點??紤]下面的代碼片段遍歷提供的根節(jié)點的樹。

JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());
 
JsonNode marksNode = rootNode.path("marks");
Iterator iterator = marksNode.getElements();

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

File: JacksonTester.java

import java.io.IOException;
import java.util.Iterator;

import org.codehaus.jackson.JsonNode;
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();
     String jsonString = "{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
     JsonNode rootNode = mapper.readTree(jsonString);

     JsonNode nameNode = rootNode.path("name");
     System.out.println("Name: "+ nameNode.getTextValue());

     JsonNode ageNode = rootNode.path("age");
     System.out.println("Age: " + ageNode.getIntValue());

     JsonNode verifiedNode = rootNode.path("verified");
     System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));

     JsonNode marksNode = rootNode.path("marks");
     Iterator<JsonNode> iterator = marksNode.getElements();
     System.out.print("Marks: [ ");
     while (iterator.hasNext()) {
      JsonNode marks = iterator.next();
      System.out.print(marks.getIntValue() + " "); 
     }
     System.out.println("]");
   } catch (JsonParseException e) {
     e.printStackTrace();
   } catch (JsonMappingException e) {
     e.printStackTrace();
   } catch (IOException e) {
     e.printStackTrace();
   }
  }
}

驗證輸出結果

使用javac編譯如下類:

復制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

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

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

樹到JSON轉換
在這個例子中,我們已經(jīng)使用JsonNode并將其寫入到一個JSON文件,并讀回創(chuàng)建了一棵樹。

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

File: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.Iterator;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;

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

     JsonNode rootNode = mapper.createObjectNode();
     JsonNode marksNode = mapper.createArrayNode();
     ((ArrayNode)marksNode).add(100);
     ((ArrayNode)marksNode).add(90);
     ((ArrayNode)marksNode).add(85);
     ((ObjectNode) rootNode).put("name", "Mahesh Kumar");
     ((ObjectNode) rootNode).put("age", 21);
     ((ObjectNode) rootNode).put("verified", false);
     ((ObjectNode) rootNode).put("marks",marksNode);

     mapper.writeValue(new File("student.json"), rootNode);

     rootNode = mapper.readTree(new File("student.json"));

     JsonNode nameNode = rootNode.path("name");
     System.out.println("Name: "+ nameNode.getTextValue());

     JsonNode ageNode = rootNode.path("age");
     System.out.println("Age: " + ageNode.getIntValue());

     JsonNode verifiedNode = rootNode.path("verified");
     System.out.println("Verified: " + (verifiedNode.getBooleanValue() ? "Yes":"No"));

     JsonNode marksNode1 = rootNode.path("marks");
     Iterator<JsonNode> iterator = marksNode1.getElements();
     System.out.print("Marks: [ ");
     while (iterator.hasNext()) {
      JsonNode marks = iterator.next();
      System.out.print(marks.getIntValue() + " "); 
     }
     System.out.println("]");
   } catch (JsonParseException e) {
     e.printStackTrace();
   } catch (JsonMappingException e) {
     e.printStackTrace();
   } catch (IOException e) {
     e.printStackTrace();
   }
  }
}

驗證結果

使用javac編譯如下類:

復制代碼 代碼如下:

C:\Jackson_WORKSPACE>javac JacksonTester.java

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

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]
從樹到Java對象轉換
在這個例子中,我們已經(jīng)使用JsonNode并將其寫入到一個JSON文件,并回讀然后將一個Student對象其轉換為創(chuàng)建了一棵樹。

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

File: JacksonTester.java

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.node.ArrayNode;
import org.codehaus.jackson.node.ObjectNode;

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

     JsonNode rootNode = mapper.createObjectNode();
     JsonNode marksNode = mapper.createArrayNode();
     ((ArrayNode)marksNode).add(100);
     ((ArrayNode)marksNode).add(90);
     ((ArrayNode)marksNode).add(85);
     ((ObjectNode) rootNode).put("name", "Mahesh Kumar");
     ((ObjectNode) rootNode).put("age", 21);
     ((ObjectNode) rootNode).put("verified", false);
     ((ObjectNode) rootNode).put("marks",marksNode);

     mapper.writeValue(new File("student.json"), rootNode);

     rootNode = mapper.readTree(new File("student.json"));

     Student student = mapper.treeToValue(rootNode, Student.class);

     System.out.println("Name: "+ student.getName());
     System.out.println("Age: " + student.getAge());
     System.out.println("Verified: " + (student.isVerified() ? "Yes":"No"));
     System.out.println("Marks: "+Arrays.toString(student.getMarks()));
   } catch (JsonParseException e) {
     e.printStackTrace();
   } catch (JsonMappingException e) {
     e.printStackTrace();
   } catch (IOException e) {
     e.printStackTrace();
   }
  }
}

class Student {
  String name;
  int age;
  boolean verified;
  int[] marks;
  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 boolean isVerified() {
   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

驗證輸出

Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

相關文章

  • Java讀取網(wǎng)頁內容并下載圖片的實例

    Java讀取網(wǎng)頁內容并下載圖片的實例

    這篇文章主要介紹了Java讀取網(wǎng)頁內容并下載圖片的實例的相關資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • 解決MyBatis中為類配置別名,列名與屬性名不對應的問題

    解決MyBatis中為類配置別名,列名與屬性名不對應的問題

    這篇文章主要介紹了解決MyBatis中為類配置別名,列名與屬性名不對應的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • java反射調用方法NoSuchMethodException的解決方案

    java反射調用方法NoSuchMethodException的解決方案

    這篇文章主要介紹了java反射調用方法NoSuchMethodException的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot?Test的webEnvironment源碼解讀

    SpringBoot?Test的webEnvironment源碼解讀

    這篇文章主要為大家介紹了SpringBoot?Test的webEnvironment源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • JAVA及相關字符集編碼問題研究分享

    JAVA及相關字符集編碼問題研究分享

    對于JAVA學習,或多或少都會遇到這樣的問題:編碼基本知識,java,系統(tǒng)軟件,url,工具軟件等
    2014-10-10
  • IDEA下使用MyBatisCodeHelper插件的方法詳解

    IDEA下使用MyBatisCodeHelper插件的方法詳解

    這篇文章主要介紹了IDEA下使用MyBatisCodeHelper插件的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-09-09
  • RestTemplate對HttpClient的適配源碼解讀

    RestTemplate對HttpClient的適配源碼解讀

    這篇文章主要為大家介紹了RestTemplate對HttpClient的適配源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • 通過實例了解java checked和unchecked異常

    通過實例了解java checked和unchecked異常

    這篇文章主要介紹了通過實例了解checked和unchecked異常,Java異常分為兩種類型,checked異常和unchecked異常,另一種叫法是異常和錯誤。下面小編就帶大家來一起學習一下吧
    2019-06-06
  • SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能

    Elasticsearch是一個開源的分布式搜索和分析引擎,它被設計用于處理大規(guī)模數(shù)據(jù)集,它提供了一個分布式多用戶能力的全文搜索引擎,本文將給大家介紹SpringBoot集成ElasticSearch(ES)實現(xiàn)全文搜索功能,需要的朋友可以參考下
    2024-02-02
  • SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    SpringCloud OpenFeign基本介紹與實現(xiàn)示例

    OpenFeign源于Netflix的Feign,是http通信的客戶端。屏蔽了網(wǎng)絡通信的細節(jié),直接面向接口的方式開發(fā),讓開發(fā)者感知不到網(wǎng)絡通信細節(jié)。所有遠程調用,都像調用本地方法一樣完成
    2023-02-02

最新評論

东山县| 和平县| 镇康县| 邢台市| 若尔盖县| 沂水县| 清流县| 永吉县| 汉川市| 错那县| 中超| 五华县| 大石桥市| 遂溪县| 镇赉县| 玉溪市| 天峨县| 安多县| 岑溪市| 淳化县| 甘德县| 定兴县| 望奎县| 沛县| 盈江县| 临夏县| 寿阳县| 宣化县| 临城县| 大荔县| 商城县| 高邑县| 桃源县| 鸡西市| 平谷区| 弥渡县| 饶河县| 上思县| 张北县| 抚松县| 韩城市|