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

淺談在Java中JSON的多種使用方式

 更新時間:2021年01月18日 08:53:48   作者:LeeShaoQing  
這篇文章主要介紹了淺談在Java中JSON的多種使用方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1. 常用的JSON轉(zhuǎn)換

 JSONObject 轉(zhuǎn) JSON 字符串

JSONObject json = new JSONObject();
jsonObject.put("name", "test");
String str = JSONObject.toJSONString(json);

JSON字符串轉(zhuǎn)JSON

String str = "{\"name\":\"test\"}";
JSONObject json = JSONObject.parseObject(str);

實體類轉(zhuǎn)JSON

Test test = new Test();
test.setName("test");
String testStr = JSONObject.toJSONString(test);
JSONObject json = JSONObject.parseObject(testStr);

Map轉(zhuǎn)JSON

JSONObject json = JSONObject.parseObject(JSON.toJSONString(map));

JSON轉(zhuǎn)Map

Map jsonToMap = JSONObject.parseObject(jsonObject.toJSONString()); 

2. 將多個JSON合并一個

JSONObject totalJSON = new JSONObject();
totalJSON.putAll(json1);
totalJSON.putAll(json2);

json1,json2 為JSONObject。 最終的代碼格式:

{
 json1:{},
 json2:{}
}

3.JSON拆分

不同的需求有不同的做法,以下提供兩種解決思路

  • 定義兩個或多個JSON進行put和remove 比如明確需要哪些字段的時候可以定義一個數(shù)組用來存放key信息。存放和刪除的時候只需要遍歷數(shù)組就可以。
  • 遍歷JSON,獲取key,value再重新put

4.JSON遍歷

定義一個工具類,獲取key和value

if(object instanceof JSONObject) {
  JSONObject jsonObject = (JSONObject) object;
  for (Map.Entry<String, Object> entry: jsonObject.entrySet()) {
    Object o = entry.getValue();
    if(o instanceof String) {
      System.out.println("key:" + entry.getKey() + ",value:" + entry.getValue());
    } else {
      jsonLoop(o);
    }
  }
}
if(object instanceof JSONArray) {
  JSONArray jsonArray = (JSONArray) object;
  for(int i = 0; i < jsonArray.size(); i ++) {
    jsonLoop(jsonArray.get(i));
  }
}

JSONArray遍歷的方式有很多種

for

for(int i = 0; i < jsonArray.size(); i++){
	JSONObject json = jsonArray.getJSONObject(i);
}

foreach

jsonArray.forEach(o -> {
  if (o instanceof JSONObject) {
    JSONObject json = (JSONObject) o;
  }

Iterator

JSONObject jsonObject = new JSONObject(jsonString);
Iterator iterator = jsonObject.keys();
while(iterator.hasNext()){
	key = (String) iterator.next();
	value = jsonObject.getString(key);
}

5.JSONPath

另外向大家推薦一個非常好用的工具:JSONPath。

JSONPath是一種簡單的方法來提取給定JSON的部分內(nèi)容,使用方式類似于正則表達式。 GitHub地址: https://github.com/json-path/JsonPath

簡單描述下使用方法已經(jīng)自己使用的案例 pom文件依賴:

<dependency>
  <groupId>com.jayway.jsonpath</groupId>
  <artifactId>json-path</artifactId>
  <version>2.2.0</version>
</dependency>

JsonPath表達式總是以與XPath表達式結(jié)合使用XML文檔相同的方式引用JSON結(jié)構(gòu)。

JsonPath中的“根成員對象”始終稱為$,無論是對象還是數(shù)組。

JsonPath表達式可以使用點表示法。

這里有個表格,說明JSONPath語法元素和對應(yīng)XPath元素的對比。

官方案例:

 

 

詳細(xì)大家還是參照官方解說。 下面是我寫的案例:

JSONArray jsonArray = JSONPath.read("$.ePrint.common..label");

需要注意的是這里的JSONArray是JSONPath的,所以導(dǎo)包是:net.minidev.json.JSONPath JSON格式不會變,所以可以轉(zhuǎn)換為alibaba的JSONArray:

com.alibaba.fastjson.JSONArray jsonArr = JSON.parse(jsonArray.toString());

這里要注意一點也是我踩過的坑:如果獲取一個JSONObject下有多個同名的JSONArray,那么返回的[]也是多個。要先遍歷獲取到的數(shù)據(jù),在取其中的一個JSON塊。

到此這篇關(guān)于淺談在Java中JSON的多種使用方式的文章就介紹到這了,更多相關(guān)Java中JSON使用方式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用IDEA創(chuàng)建MAPPER模板過程圖解

    如何使用IDEA創(chuàng)建MAPPER模板過程圖解

    這篇文章主要介紹了如何使用IDEA創(chuàng)建MAPPER模板,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • MyBatis-Plus介紹及Spring Boot 3集成指南

    MyBatis-Plus介紹及Spring Boot 3集成指南

    本文介紹了MyBatis-Plus的基本特性及其與Spring Boot 3的集成步驟,通過使用MyBatis-Plus,開發(fā)者可以快速地搭建和開發(fā)數(shù)據(jù)訪問層,同時提高代碼質(zhì)量和開發(fā)效率,感興趣的朋友一起看看吧
    2024-05-05
  • WebClient拋UnsupportedMediaTypeException異常解決

    WebClient拋UnsupportedMediaTypeException異常解決

    這篇文章主要為大家介紹了WebClient拋UnsupportedMediaTypeException異常的解決方案,文中給大家介紹了六中方案,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-02-02
  • 深入java垃圾回收的詳解

    深入java垃圾回收的詳解

    本篇文章是對java垃圾回收進行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • 深入理解JVM之Java對象的創(chuàng)建、內(nèi)存布局、訪問定位詳解

    深入理解JVM之Java對象的創(chuàng)建、內(nèi)存布局、訪問定位詳解

    這篇文章主要介紹了深入理解JVM之Java對象的創(chuàng)建、內(nèi)存布局、訪問定位,結(jié)合實例形式詳細(xì)分析了Java對象的創(chuàng)建、內(nèi)存布局、訪問定位相關(guān)概念、原理、操作技巧與注意事項,需要的朋友可以參考下
    2019-09-09
  • springBoot集成Elasticsearch 報錯 Health check failed的解決

    springBoot集成Elasticsearch 報錯 Health check failed的解決

    這篇文章主要介紹了springBoot集成Elasticsearch 報錯 Health check failed的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java生成驗證碼圖片的方法

    java生成驗證碼圖片的方法

    這篇文章主要為大家詳細(xì)介紹了java生成驗證碼圖片的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • Java創(chuàng)建多線程異步執(zhí)行實現(xiàn)代碼解析

    Java創(chuàng)建多線程異步執(zhí)行實現(xiàn)代碼解析

    這篇文章主要介紹了Java創(chuàng)建多線程異步執(zhí)行實現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • 關(guān)于java開發(fā)的性能問題總結(jié)(必看)

    關(guān)于java開發(fā)的性能問題總結(jié)(必看)

    下面小編就為大家?guī)硪黄P(guān)于java開發(fā)的性能問題總結(jié)(必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • Java8新特性Stream短路終端操作實例解析

    Java8新特性Stream短路終端操作實例解析

    這篇文章主要介紹了Java8新特性Stream短路終端操作實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-12-12

最新評論

彭山县| 托克托县| 广水市| 佛山市| 大埔区| 中方县| 石楼县| 文成县| 凌云县| 威信县| 肥乡县| 阿拉尔市| 易门县| 清流县| 怀来县| 肥西县| 莱阳市| 历史| 叶城县| 金溪县| 社旗县| 南汇区| 安国市| 前郭尔| 莫力| 城市| 宁津县| 陆川县| 五华县| 佳木斯市| 措勤县| 隆回县| 南康市| 从化市| 县级市| 灵丘县| 贵阳市| 绵竹市| 九寨沟县| 泾阳县| 濮阳市|