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

java循環(huán)遍歷無(wú)規(guī)則json的方式:gson、fastjson、orgjson

 更新時(shí)間:2024年08月08日 09:17:53   作者:qq_41771339  
這篇文章主要介紹了java循環(huán)遍歷無(wú)規(guī)則json的方式:gson、fastjson、orgjson,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

引入依賴

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>fastjson</artifactId>
	<version>1.2.83</version>
</dependency>
 
<dependency>
	<groupId>org.json</groupId>
	<artifactId>json</artifactId>
	<version>20200518</version>
</dependency>
 
<dependency>
	<groupId>com.google.code.gson</groupId>
	<artifactId>gson</artifactId>
	<version>2.8.6</version>
</dependency>

使用gson遍歷

private static testJson = "";
 
private static Map<String, Object> pathMap = new HashMap<>();
 
//通過(guò)gson遍歷所有參數(shù)
public static void getJsonMapByGson() {
	Gson gson = new Gson();
	JsonObject jsonObject = gson.fromJson(testJson, JsonObject.class);
	System.out.println(jsonObject);
	analysisJson("/", jsonObject);
	for (Map.Entry entry : pathMap.entrySet()) {
		System.out.println(entry);
	}
}
 
//遞歸解析Json、獲取所有鍵值對(duì)
public static void analysisJson(String pathPre, JsonObject jsonObject) {
	for (String key : jsonObject.keySet()) {
		JsonElement value = jsonObject.get(key);
		if (value.isJsonPrimitive()) {
			if (value.getAsJsonPrimitive().isString()) {		//此處只取了字符串
				pathMap.put(pathPre + key, value.getAsString());
			}
		} else if (value.isJsonObject()) {
			JsonObject objectValue = value.getAsJsonObject();
			analysisJson(pathPre + key, objectValue);
		} else if (value.isJsonArray()) {
			JsonArray jsonArray = value.getAsJsonArray();
			for (int i = 0; i < jsonArray.size(); i++) {
				JsonObject tempJson = new JsonObject();
				tempJson.add(i + "", jsonArray.get(i));
				analysisJson(pathPre + key, tempJson);
			}
		}
	}
}

使用fastjson遍歷

private static testJson = "";
 
private static Map<String, Object> pathMap = new HashMap<>();
 
//通過(guò)fastjson遍歷所有參數(shù)
public static void getJsonMapByFastjson() {
	JSONObject jsonObject = JSONObject.parseObject(testJson);
	System.out.println(jsonObject);
	analysisJson("/", jsonObject);
	for (Map.Entry entry : pathMap.entrySet()) {
		System.out.println(entry);
	}
}
 
//遞歸解析Json、獲取所有鍵值對(duì)
public static void analysisJson(String pathPre, JSONObject jsonObject) {
	Set<String> set = jsonObject.keySet();
	Iterator it = set.iterator();
	while (it.hasNext()) {
		String key = it.next().toString();
		Object value = jsonObject.get(key);
		if (value instanceof String || value instanceof Integer || value instanceof Float || value instanceof Double) {
			pathMap.put(pathPre + key, value);
		} else if (value instanceof JSONObject) {
			analysisJson(pathPre + key + "/", (JSONObject) value);
		} else if (value instanceof JSONArray) {
			JSONArray jsonArray = (JSONArray) value;
			for (int i = 0; i < jsonArray.size(); i++) {
				JSONObject tempJson = new JSONObject();
				tempJson.put(i + "", jsonArray.get(i));
				analysisJson(pathPre + key + "/", tempJson);
			}
		}
	}
}

使用orgjson遍歷

private static testJson = "";
 
private static Map<String, Object> pathMap = new HashMap<>();
 
//通過(guò)org.json遍歷所有參數(shù)
public static void getJsonMapByOrgjson() {
	JSONObject jsonObject = new JSONObject(testJson);
	System.out.println(jsonObject);
	analysisJson("/", jsonObject);
	for (Map.Entry entry : pathMap.entrySet()) {
		System.out.println(entry);
	}
}
 
//遞歸解析Json、獲取所有鍵值對(duì)
public static void analysisJson(String pathPre, JSONObject jsonObject) {
	Set<String> set = jsonObject.keySet();
	Iterator it = set.iterator();
	while (it.hasNext()) {
		String key = it.next().toString();
		Object value = jsonObject.get(key);
		if (value instanceof String || value instanceof Integer || value instanceof Float || value instanceof Double) {
			pathMap.put(pathPre + key, value);
		} else if (value instanceof JSONObject) {
			analysisJson(pathPre + key + "/", (JSONObject) value);
		} else if (value instanceof JSONArray) {
			JSONArray jsonArray = (JSONArray) value;
			for (int i = 0; i < jsonArray.length(); i++) {
				JSONObject tempJson = new JSONObject();
				tempJson.put(i + "", jsonArray.get(i));
				analysisJson(pathPre + key + "/", tempJson);
			}
		}
	}
}

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Retry方法的簡(jiǎn)單實(shí)現(xiàn)

    Java中Retry方法的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了Java中Retry方法的簡(jiǎn)單實(shí)現(xiàn),Retry主要是利用Java的lambda表達(dá)式和線程接口實(shí)現(xiàn)有返回值和無(wú)返回值的重試,思考了下就寫(xiě)了一個(gè)簡(jiǎn)易R(shí)etry功能分享出來(lái),需要的朋友可以參考下
    2024-01-01
  • Java代碼實(shí)現(xiàn)矩形覆蓋實(shí)例

    Java代碼實(shí)現(xiàn)矩形覆蓋實(shí)例

    這篇文章主要介紹了Java代碼實(shí)現(xiàn)矩形覆蓋實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • Java異常處理的最佳實(shí)踐指南

    Java異常處理的最佳實(shí)踐指南

    異常處理是軟件開(kāi)發(fā)中的關(guān)鍵環(huán)節(jié),良好的異常處理策略能提高系統(tǒng)的穩(wěn)定性、可維護(hù)性和用戶體驗(yàn),以下是項(xiàng)目中異常處理的全面指南,需要的朋友可以參考下
    2025-09-09
  • java實(shí)例方法被覆蓋,靜態(tài)方法被隱藏Explain(詳解)

    java實(shí)例方法被覆蓋,靜態(tài)方法被隱藏Explain(詳解)

    下面小編就為大家?guī)?lái)一篇java實(shí)例方法被覆蓋,靜態(tài)方法被隱藏Explain(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • MyBatis-Plus中最簡(jiǎn)單的查詢操作教程(Lambda)

    MyBatis-Plus中最簡(jiǎn)單的查詢操作教程(Lambda)

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus中最簡(jiǎn)單的查詢操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    Java中Array、List、Map相互轉(zhuǎn)換的方法詳解

    這篇文章主要介紹了Java中Array、List、Map相互轉(zhuǎn)換的方法詳解,在實(shí)際項(xiàng)目開(kāi)發(fā)中或者一些算法面試題目中經(jīng)常需要用到Java中這三種類型的相互轉(zhuǎn)換,比如對(duì)于一個(gè)整型數(shù)組中尋找一個(gè)整數(shù)與所給的一個(gè)整數(shù)值相同,需要的朋友可以參考下
    2023-08-08
  • java中List的toArray()方法用法舉例

    java中List的toArray()方法用法舉例

    這篇文章主要介紹了java中List的toArray()方法的相關(guān)資料,toArray()方法可以將List轉(zhuǎn)換為數(shù)組,但需要注意其兩種形式的區(qū)別,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • IntelliJ IDEA 2020安裝使用教程詳解

    IntelliJ IDEA 2020安裝使用教程詳解

    這篇文章主要介紹了IntelliJ IDEA 2020安裝使用教程,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • spring?boot寫(xiě)java?web和接口

    spring?boot寫(xiě)java?web和接口

    這篇文章主要介紹了spring?boot寫(xiě)java?web和接口,Spring?Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來(lái)簡(jiǎn)化新Spring應(yīng)用的初始搭建以及開(kāi)發(fā)過(guò)程,該框架使用了特定的方式來(lái)進(jìn)行配置,從而使開(kāi)發(fā)人員不再需要定義樣板化的配置,下面詳細(xì)內(nèi)容需要的小伙伴可以參考一下
    2022-01-01
  • spring security中Authority、Role的區(qū)別及說(shuō)明

    spring security中Authority、Role的區(qū)別及說(shuō)明

    這篇文章主要介紹了spring security中Authority、Role的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評(píng)論

涞源县| 五寨县| 宿迁市| 聊城市| 包头市| 昔阳县| 沙雅县| 洮南市| 海丰县| 元氏县| 谷城县| 迁西县| 彭阳县| 桐柏县| 阿鲁科尔沁旗| 恭城| 茂名市| 建湖县| 钟祥市| 乐平市| 常宁市| 定陶县| 瓮安县| 玉龙| 株洲县| 大名县| 岗巴县| 莱芜市| 巴南区| 囊谦县| 衡阳县| 廊坊市| 遂昌县| 布拖县| 新泰市| 呼和浩特市| 临城县| 云安县| 海伦市| 滁州市| 越西县|