激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java的Jackson庫的使用及其樹模型的入門學習教程

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

2020-03-21 15:13goldensun JAVA教程

這篇文章主要介紹了Java的Jackson庫的使用及其樹模型入門學習教程,Jackson庫通常被用來作Java對象和JSON的互相轉換,需要的朋友可以參考下

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

創建一個名為JacksonTester在Java類文件 C:\>Jackson_WORKSPACE.

文件: JacksonTester.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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

現在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

 

?
1
2
3
4
5
Student [ name: Mahesh, age: 21 ]
{
 "name" : "Mahesh",
 "age" : 21
}

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

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

 

復制代碼 代碼如下:

 

ObjectMapper mapper = new ObjectMapper();

 


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

 

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

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

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

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

從JSON創建樹
ObjectMapper提供一個指針樹的根節點在讀取JSON之后。根節點可用于遍歷完全樹。考慮下面的代碼片段獲得提供JSON字符串的根節點。

?
1
2
3
4
5
//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);

遍歷樹模型
使用相對路徑來根節點在遍歷樹,并處理該數據得到的每個節點。考慮下面的代碼片段遍歷提供的根節點的樹。

?
1
2
3
4
5
JsonNode nameNode = rootNode.path("name");
System.out.println("Name: "+ nameNode.getTextValue());
 
JsonNode marksNode = rootNode.path("marks");
Iterator iterator = marksNode.getElements();

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

File: JacksonTester.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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

現在運行jacksonTester看到結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

 

?
1
2
3
4
Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

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

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

File: JacksonTester.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
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

現在運行jacksonTester看到的結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

 

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

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

File: JacksonTester.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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

現在運行jacksonTester看到結果:
復制代碼 代碼如下:

C:\Jackson_WORKSPACE>java JacksonTester

驗證輸出

 

?
1
2
3
4
Name: Mahesh Kumar
Age: 21
Verified: No
Marks: [ 100 90 85 ]

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 福利一区二区三区视频在线观看 | 国产69精品久久久久久久久久 | 88xx成人永久免费观看 | 国产美女视频一区二区三区 | 毛片视频网站在线观看 | 成人免费看片a | 久啪视频 | 91短视频版高清在线观看免费 | 欧美日韩免费一区 | 欧美特黄一级高清免费的香蕉 | 国产做爰全免费的视频黑人 | 国产精品久久久久久久成人午夜 | 一级成人免费 | 国产亚色 | 暖暖免费观看高清完整版电影 | 黄色片在线观看网站 | 青青草成人影视 | 精品久久久一二三区播放播放播放视频 | 毛片网站视频 | 亚洲午夜激情网 | 国产一区二区三区精品在线观看 | 在线91观看| 九九热精品免费 | 黄色高清免费 | 在线视频国产一区 | 日本视频网 | 国产亚洲在 | 亚洲一级成人 | 精品xxxx户外露出视频 | 国产免费传媒av片在线 | 91豆奶| 色视频在线 | 欧美成人精品一区 | 久久久久久久久久久久网站 | 久久久久无码国产精品一区 | 免费啪视频在线观看 | 久久久久久久久久亚洲精品 | 欧美在线成人影院 | 性生活香蕉视频 | 亚洲一区二区中文字幕在线观看 | 56av国产精品久久久久久久 |