一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java-Jackson使用

詳解Java-Jackson使用

2021-08-26 11:30小小張自由—>張有博 Java教程

這篇文章主要介紹了Java-Jackson使用詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

序列化

序列化 (Serialization)是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以后,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。

Json是什么?

Jason是 JavaScript Object Notation— JavaScript對象表示法,是一種輕量級數據交換格式。主要用于數據傳輸,比如說在后端寫了一個Java對象,想在其他地方(前端)使用這個對象,就需要轉換為Json這種形式進行傳輸。

1.基本規則

數據在名稱/值對中:json數據是由鍵值對構成的

值用引號引起來,也可以不使用引號

值的取值類型: 數字、字符串、布爾值、數組(如{"persons":[{},{},{}]})、對象、null

數據用逗號分隔:多個鍵值對由逗號分隔

方括號保存數組:[]

花括號保存對象:使用{}定義json格式

2.獲取數據

json對象.鍵名

json對象["鍵名"]

數組對象[索引]

遍歷

3.用途

以某種存儲形式使自定義對象持久化;

將對象從一個地方傳遞到另一個地方。

使程序更具維護性。

Jackson

Java生態圈中有很多處理JSON和XML格式化的類庫, 常見的解析器:Jsonlib,Gson,fastjson,Jackson。Jackson是其中比較著名的一個,也比較方便。,Jackson相對來說比較高效,在項目中主要使用Jackson進行JSON和Java對象轉換,下面給出一些Jackson的JSON操作方法。

1.導入Jar包

詳解Java-Jackson使用

2.Json注解

@JsonIgnore 此注解用于屬性上,作用是進行JSON操作時忽略該屬性。

@JsonFormat 此注解用于屬性上,作用是把Date類型直接轉化為想要的格式,如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")。

@JsonProperty 此注解用于屬性上,作用是把該屬性的名稱序列化為另外一個名稱,如把trueName屬性序列化為name,@JsonProperty("name")。

?
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
public class Person {
 
  private String name;
  private int age;
   @JsonProperty("gender")
  private String gender;
 
  // @JsonIgnore//忽略該屬性,不進行轉換
  @JsonFormat(pattern = "yyyy-MM-dd")
  private Date birthday;
 
  public Date getBirthday() {
    return birthday;
  }
 
  public void setBirthday(Date birthday) {
    this.birthday = birthday;
  }
 
  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 getGender() {
    return gender;
  }
 
  public void setGender(String gender) {
    this.gender = gender;
  }
 
  @Override
  public String toString() {
    return "Person{" +
        "name='" + name + '\'' +
        ", age=" + age +
        ", gender='" + gender + '\'' +
        '}';
  }
}

3.Json轉為Java對象

導入Jackson的相關jar包

創建Jackson的核心對象,ObjectMapper

調用ObjectMapper的相關方法進行數據轉換——將Json字符串轉換為Java對象

readValue(json字符串數據,類.Class)

?
1
2
3
4
5
6
7
8
9
10
11
//將Json字符串轉為Java對象
  @Test
  public void test5() throws Exception{
    //json字符串
    String str="{\"gender\":\"男\",\"name\":\"zhangsan\",\"age\":23}";
    //Jackson核心對象
    ObjectMapper mapper = new ObjectMapper();
    //使用readValue方法進行轉換
    Person person = mapper.readValue(str, Person.class);
    System.out.println(person);
  }

4.Java對象轉換Json

導入Jackson的相關jar包

創建Jackson的核心對象,ObjectMapper

調用ObjectMapper的相關方法進行數據轉換——將Java對象轉換為Json

writeValue(參數,obj對象)

參數:File:將obj對象轉換為JSON字符串,并保存到指定的文件中

參數:Writer:將obj對象轉換為JSON字符串,并將json數據填充到字符輸出流中

參數:OutputStream:將obj對象轉換為JSON字符串,并將json數據填充到字節輸出流中

writeValueAsString(obj):將對象轉為json字符串(常用)

?
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
78
79
//Java對象轉Json
 @Test
 public void test1() throws IOException {
 
   //1.創建Java對象
   Person p=new Person();
   p.setName("張三");
   p.setAge(23);
   p.setGender("男");
 
   //2.創建Jackson對象 ObjectMapper
   ObjectMapper mapper=new ObjectMapper();
   //3.轉換為JSOn
   String json = mapper.writeValueAsString(p);
   System.out.println(json);
   mapper.writeValue(new File("d:\\jaon.txt"),json);
   mapper.writeValue(new FileWriter("d:\\json.txt"),json);
 }
 
 
 @Test
 public void test2() throws JsonProcessingException {
 
   //1.創建Java對象
   Person p = new Person();
   p.setName("張三");
   p.setAge(23);
   p.setGender("男");
   p.setBirthday(new Date());
   //2.創建Jackson對象 ObjectMapper
   ObjectMapper mapper = new ObjectMapper();
   //3.轉換為JSOn
   String json = mapper.writeValueAsString(p);
   System.out.println(json);
 }
 
 
 @Test
 public void test3() throws Exception {
   //復雜格式的轉換:list
   //1.創建Java對象
   Person p1 = new Person();
   p1.setName("張三");
   p1.setAge(23);
   p1.setGender("男");
   p1.setBirthday(new Date());
 
   Person p2 = new Person();
   p2.setName("張三");
   p2.setAge(23);
   p2.setGender("男");
   p2.setBirthday(new Date());
 
   List<Person> list=new ArrayList<>();
   list.add(p1);
   list.add(p1);
 
   //2.創建Jackson對象 ObjectMapper
   ObjectMapper mapper = new ObjectMapper();
   //3.轉換為JSOn
   String json = mapper.writeValueAsString(list);
   System.out.println(json);//[{"name":"張三","age":23,"gender":"男","birthday":"2021-03-19"},{"name":"張三","age":23,"gender":"男","birthday":"2021-03-19"}]
 
 }
 
 @Test
 public void  test4() throws Exception{
   //復雜格式的轉換Map
   //1.創建map對象
   Map<String,Object> map=new HashMap<>();
   map.put("name","zhangsan");
   map.put("age",23);
   map.put("gender","男");
   //2.創建Jackson對象 ObjectMapper
   ObjectMapper mapper = new ObjectMapper();
   //3.轉換為JSOn
   String json = mapper.writeValueAsString(map);
   System.out.println(json);//{"gender":"男","name":"zhangsan","age":23}
 }

到此這篇關于Java-Jackson使用詳解的文章就介紹到這了,更多相關Java-Jackson使用詳解內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/promsing/article/details/114986873

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
主站蜘蛛池模板: 三级理论在线观看 | 娇喘嗯嗯 轻点啊视频福利 九九九九在线精品免费视频 | 日本一在线中文字幕天堂 | 日本精品人妖shemale人妖 | porono日本动漫 | 国产精品高清一区二区三区 | 国产精品久久亚洲一区二区 | 和肥岳在厨房激情 | 亚洲色大成网站www久久九九 | 国产欧美日韩高清专区ho | 臀精插宫NP文| 午夜精品免费 | 免费91麻豆精品国产自产在线观看 | 4399h漫画| jiuse视频| 久99久热只有精品国产99 | 国内激情自拍 | 久久人妻熟女中文字幕AV蜜芽 | 人阁色第四影院在线观看 | 超强台风免费观看完整版视频 | 久久黄色精品视频 | 欧美xxoo黑人又粗暴 | 欧美国产精品久久 | 欧美日韩视频在线第一区二区三区 | 91精品婷婷国产综合久久8 | 久青草国产观看在线视频 | 美国video | 黄动漫车车好快的车车a | 欧美一区二区福利视频 | 亚洲精品一线二线三线 | 亚洲精品国产精品麻豆99 | jazz中国女人护士 | 国产成人一区二区三区影院免费 | 国内精品麻豆 | 国产永久在线观看 | 乌克兰13一14娇小 | 女同久久另类99精品国产 | 国产高清免费午夜在线视频 | 国产精品毛片无码 | 清清草在线视频 | 久久久黄色片 |