欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java遍歷Json中的key和value問(wèn)題

 更新時(shí)間:2023年11月20日 08:39:19   作者:請(qǐng)告訴他  
這篇文章主要介紹了Java遍歷Json中的key和value問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java遍歷Json中的key和value

最近對(duì)接了不少別人家的系統(tǒng),他們的簽名驗(yàn)簽大多采用業(yè)務(wù)數(shù)據(jù)值拼接之后進(jìn)行加密動(dòng)作

這個(gè)時(shí)候遍歷出對(duì)象中的key和value就有為方便,

因此有以下現(xiàn)成代碼:

 
    public String appendSignData(JSONObject obj){
 
        StringBuffer sb = new StringBuffer();
        //fastjson解析方法
        for (Map.Entry<String, Object> entry : obj.entrySet()) {
            System.out.println("key值="+entry.getKey());
            sb.append(entry.getValue());
        }
 
 
        return sb.toString();
    }

遍歷獲取JSONObject的所有Key

JSON解析使用JSONObject.keys()可以獲取所有的key值,但是這種方法只能獲取一層:

比如{"b":"2","c":{"A":"1","B":"2"},"a":"1"},只能夠獲取b,c,a

如果想要獲取被嵌套的{"A":"1","B":"2"}中A,B就不可以了

自己實(shí)現(xiàn)了一下獲取嵌套類型的JSONObject的所有key值

import java.util.Iterator;
 
 
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
 
public class testGetKeys {
 
	
	 public static String getKeys(JSONObject test) throws JSONException{
		   
		 String result = null;
		 testJsonCompare t = new testJsonCompare();
		 Iterator keys = test.keys();
		 while(keys.hasNext()){
			 
			 try{
				 
			 String key = keys.next().toString();
			 String value = test.optString(key);
			 
			 int i = t.testIsArrayORObject(value);
			 
			 if(result == null || result.equals("")){
				 if(i == 0){
				
					 result = key + ",";
					 System.out.println("i=0 | key="+key+"| result="+result);
					 
					 
				 }else if( i == 1){
					
					 result = key + ",";
					 System.out.println("i=1 | key="+key+"| result="+result);
					 result = getKeys(new JSONObject(value))+",";
				 }else if( i == 2){
					 
					 result = key + ",";
					 System.out.println("i=2 | key="+key+"| result="+result);
					 JSONArray arrays = new JSONArray(value);
					 for(int k =0;k<arrays.length();k++){
						 JSONObject array = new JSONObject(arrays.get(k));
						 result = getKeys(array) + ",";
					 }
				 }
				 
			 }else{
				  if(i == 0){
				
				 result = result + key + ",";
				 System.out.println("i=0 | key="+key+"| result="+result);
				 
				 
			 }else if( i == 1){
				
				 result = result + key + ",";
				 System.out.println("i=1 | key="+key+"| result="+result);
				 result = result + getKeys(new JSONObject(value));
			 }else if( i == 2){
				 result = result + key + ",";
				 System.out.println("i=2 | key="+key+"| result="+result);
				 JSONArray arrays = new JSONArray(value);
				 for(int k =0;k<arrays.length();k++){
					 JSONObject array = new JSONObject(arrays.get(k));
					 result = result + getKeys(array) + ",";
				 }
			 }
			 }
			
			 
		 }catch(JSONException e){
			 e.printStackTrace();
		 }
			 }
		
		 
		 return result;
	 }
	 
	 public static void main(String args[]) throws org.json.JSONException{
		 
		 JSONObject test = new JSONObject();
		 JSONObject test1 = new JSONObject();
		 
		 try{
			  test1.put("A", "1");
			  test1.put("B", "2");
			  
			  test.put("a", "1");
			  test.put("c", test1);
			  test.put("b", "2");
		  
			  System.out.println(test.toString());
			  
		 }catch(JSONException e){
			 e.printStackTrace();
		 }
		 
		 String s = getKeys(test);
		 System.out.println(s);
		
		 
	 }
}

testIsArrayORObject是判斷一個(gè)字符串是array類型還是object

	public int testIsArrayORObject(String sJSON){
		/*
		 * return 0:既不是array也不是object
		 * return 1:是object
		 * return 2 :是Array
		 */
		try {
			JSONArray array = new JSONArray(sJSON);
			return 2;
		} catch (JSONException e) {// 拋錯(cuò) 說(shuō)明JSON字符不是數(shù)組或根本就不是JSON
			try {
				JSONObject object = new JSONObject(sJSON);
				return 1;
			} catch (JSONException e2) {// 拋錯(cuò) 說(shuō)明JSON字符根本就不是JSON
				System.out.println("非法的JSON字符串");
				return 0;
			}
		}
 
	}

總結(jié)

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

相關(guān)文章

  • java8 利用reduce實(shí)現(xiàn)將列表中的多個(gè)元素的屬性求和并返回操作

    java8 利用reduce實(shí)現(xiàn)將列表中的多個(gè)元素的屬性求和并返回操作

    這篇文章主要介紹了java8 利用reduce實(shí)現(xiàn)將列表中的多個(gè)元素的屬性求和并返回操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-08-08
  • Spring Cloud微服務(wù)使用webSocket的方法

    Spring Cloud微服務(wù)使用webSocket的方法

    WebSocket在現(xiàn)代瀏覽器中的應(yīng)用已經(jīng)算是比較普遍了,在某些業(yè)務(wù)場(chǎng)景下,要求必須能夠在服務(wù)器端推送消息至客戶端,本文給大家介紹Spring Cloud微服務(wù)使用webSocket的方法,感興趣的朋友一起看看吧
    2021-06-06
  • Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析

    Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析

    這篇文章主要介紹了Java自定義實(shí)現(xiàn)equals()方法過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java給實(shí)體每一個(gè)字段賦默認(rèn)值詳細(xì)代碼示例

    Java給實(shí)體每一個(gè)字段賦默認(rèn)值詳細(xì)代碼示例

    這篇文章主要給大家介紹了關(guān)于Java給實(shí)體每一個(gè)字段賦默認(rèn)值的相關(guān)資料,在編程過(guò)程中有時(shí)會(huì)出現(xiàn)這樣一種情況,在查詢無(wú)結(jié)果時(shí)我們需要給實(shí)體賦默認(rèn)值,需要的朋友可以參考下
    2023-09-09
  • SpringBoot快速接入OpenAI大模型的方法(JDK8)

    SpringBoot快速接入OpenAI大模型的方法(JDK8)

    本文介紹了如何使用AI4J快速接入OpenAI大模型,并展示了如何實(shí)現(xiàn)流式與非流式的輸出,以及對(duì)函數(shù)調(diào)用的使用,AI4J支持JDK8,適用于多種應(yīng)用場(chǎng)景,包括Spring Boot項(xiàng)目,感興趣的朋友一起看看吧
    2025-02-02
  • 詳解Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制

    詳解Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制

    這篇文章主要為大家詳細(xì)介紹了Java動(dòng)態(tài)代理的實(shí)現(xiàn)機(jī)制,感興趣的小伙伴們可以參考一下
    2016-03-03
  • Springboot中的@ComponentScan注解使用解析

    Springboot中的@ComponentScan注解使用解析

    這篇文章主要介紹了Springboot中的@ComponentScan注解使用解析,@ComponentScan用于類或接口上主要是指定掃描路徑,spring會(huì)把指定路徑下帶有指定注解的類注冊(cè)到IOC容器中,需要的朋友可以參考下
    2024-01-01
  • Java 如何從spring容器中獲取注入的bean對(duì)象

    Java 如何從spring容器中獲取注入的bean對(duì)象

    這篇文章主要介紹了Java 如何從spring容器中獲取注入的bean對(duì)象,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • 使用Spring?Boot如何限制在一分鐘內(nèi)某個(gè)IP只能訪問(wèn)10次

    使用Spring?Boot如何限制在一分鐘內(nèi)某個(gè)IP只能訪問(wèn)10次

    有些時(shí)候,為了防止我們上線的網(wǎng)站被攻擊,或者被刷取流量,我們會(huì)對(duì)某一個(gè)ip進(jìn)行限制處理,這篇文章,我們將通過(guò)Spring?Boot編寫一個(gè)小案例,來(lái)實(shí)現(xiàn)在一分鐘內(nèi)同一個(gè)IP只能訪問(wèn)10次,感興趣的朋友一起看看吧
    2023-10-10
  • Spring中常用注解的用法

    Spring中常用注解的用法

    這篇文章主要介紹了Spring中常用注解的用法,Spring注解方式減少了配置文件內(nèi)容,更加便于管理,并且使用注解可以大大提高了開(kāi)發(fā)效率,注解本身是沒(méi)有功能的,和xml一樣,注解和xml都是一種元數(shù)據(jù),元數(shù)據(jù)即解釋數(shù)據(jù)的數(shù)據(jù),也就是所謂的配置,需要的朋友可以參考下
    2023-08-08

最新評(píng)論