日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Jackson快速入门

發(fā)布時間:2025/3/12 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Jackson快速入门 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

引言

上一篇博客《XML模板解析————Dom4j解析xml案例分析》簡單講解了關(guān)于xml模板的解析,使用到了dom4j,這篇文章其實(shí)算是個姊妹篇,都是對于目前工作中的一些任務(wù),如xml、json相互解析所涉及到的知識。

但是相對于xml而言,我更希望通過這篇博客能夠稍微全面的學(xué)習(xí)一下jackson。因?yàn)橹坝眠^的相關(guān)類庫是國產(chǎn)的fastjson,雖然簡單的操作還可以,但是最近發(fā)現(xiàn)遠(yuǎn)比jackson的功能還是差遠(yuǎn)了。雖然fastjson在性能方面上較為優(yōu)秀,但是jackson本身非常穩(wěn)定,并且功能相當(dāng)齊全,歷史也較為久遠(yuǎn),而且jackson也是Spring Boot對于json解析的默認(rèn)推薦。如果你的項(xiàng)目是Spring Boot,不需要引入任何的額外配置即可完成對json的處理操作,真是又強(qiáng)大,又好用。

一、ObjectMapper類

ObjectMapper類是Jackson庫的主要類。它提供了一些功能將Java對象匹配JSON結(jié)構(gòu),反之亦然。它使用JsonParser和JsonGenerator的實(shí)例實(shí)現(xiàn)JSON實(shí)際的讀/寫。

ObjectMapper是可以反復(fù)使用的對象。

二、JSON字符串轉(zhuǎn)POJO對象

@Testpublic void jsonStrToJavaBean() throws JsonParseException, JsonMappingException, IOException {String stuJsonStr = "{\"name\" : \"Tom\", \"age\" : 25}";ObjectMapper mapper = new ObjectMapper();Student stu = mapper.readValue(stuJsonStr, Student.class);System.out.println(stu);String stuStr = mapper.writeValueAsString(stu);System.out.println(stuStr);}

執(zhí)行結(jié)果:

com.group.coursesystem.util.JsonTest$Student@167fdd33 {"name":"Tom","age":25}

三、對象序列化

對象序列化指的是將POJO對象保存到文件中,文件以".json"結(jié)尾,并且要能夠從json文件中讀出對象。

將對象序列化到j(luò)son文件中:

@Testpublic void convertBeanAndJsonFile() throws JsonGenerationException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();Student stu = new Student("Milly", 23);mapper.writeValue(new File(stu.getName() + ".json"), stu);}

執(zhí)行結(jié)果:

將json文件讀出到Bean中:

@Testpublic void jsonFileToBean() throws JsonParseException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();Student stu = mapper.readValue(new File("Milly.json"), Student.class);System.out.println(stu);}

執(zhí)行結(jié)果:

[name = Milly, age = 23]

四、數(shù)據(jù)綁定

Jackson數(shù)據(jù)綁定分為簡單數(shù)據(jù)綁定完全數(shù)據(jù)綁定。

4.1 簡單數(shù)據(jù)綁定

簡單數(shù)據(jù)綁定是指JSON映射到Java核心數(shù)據(jù)類型,如String 、Map、List等。

JSON類型Java類型
objectLinkedHashMap<String,Object>
arrayArrayList<Object>
stringString
complete numberInteger, Long or BigInteger
fractional numberDouble / BigDecimal
true | falseBoolean
nullnull

示例代碼:

@Testpublic void simpleDataBind() throws JsonGenerationException, JsonMappingException, IOException {ObjectMapper mapper = new ObjectMapper();boolean isStudent = true;int[] nums = {1, 3, 5, 7, 9};Student Jerry = new Student("Jerry", 26);Map<String, Student> stuMap = new HashMap<>();stuMap.put("studentObj", Jerry);Map<String, Object> dataMap = new HashMap<>();dataMap.put("studentName", Jerry.getName());dataMap.put("studentAge", Jerry.getAge());dataMap.put("Jerry", Jerry);dataMap.put("stuMap", stuMap);dataMap.put("nums", nums);dataMap.put("isStudent", isStudent);// -----------------序列化為json文件------------------mapper.writeValue(new File("dataMap.json"), dataMap);// -------------------從json文件中讀出各個對象----------------Map<String, Object> readDataMap = mapper.readValue(new File("dataMap.json"), Map.class);System.out.println(readDataMap);System.out.println(readDataMap.get("Jerry"));System.out.println(readDataMap.get("stuMap"));System.out.println(readDataMap.get("nums"));System.out.println(readDataMap.get("isStudent"));}

執(zhí)行結(jié)果:

dataMap.json文件內(nèi)容(原始形式為排列成一行,下圖為原數(shù)據(jù)手動格式化后的結(jié)果):

控制臺輸出:

4.2 完全數(shù)據(jù)綁定

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

參考二、三節(jié)。

總結(jié)

以上是生活随笔為你收集整理的Jackson快速入门的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。