JAva jsonデータの再帰遍歴およびその他の処理

4445 ワード

一、jsonデータの再帰遍歴
/**  、
	 *     JSON  。
	 * @param objJson
	 */
	 public static void  analysisJson(Object objJson){
		 HashMap map = new HashMap<>();
	    	//  obj json  
	    	if(objJson instanceof JSONArray){
	    		JSONArray objArray = (JSONArray)objJson;
				for (int i = 0; i < objArray.size(); i++) {
					analysisJson(objArray.get(i));
				}
	    	}
	    	//   json  
	    	else if(objJson instanceof JSONObject){
	    		JSONObject jsonObject = (JSONObject)objJson;
				Iterator it = jsonObject.keys();
				while(it.hasNext()){
					String key = it.next().toString();
					Object object = jsonObject.get(key);
					//        
					if(object instanceof JSONArray){
						JSONArray objArray = (JSONArray)object;
						analysisJson(objArray);
					}
					//  key    json  
					else if(object instanceof JSONObject){
						analysisJson((JSONObject)object);
					}
					//  key    
					else{
						System.out.println("["+key+"]:"+object.toString()+" ");
					}
				}
	    	}
	    }

二、jsonデータの再帰回転map
 /**   、
		 *     JSON  。
		 * @param JsonToMap
		 * @return  Map
		 */
		public static Map IteratorHash(net.sf.json.JSONObject JsonToMap){
			Iterator> it = JsonToMap.keys();		
			HashMap RMap = new HashMap(); 
			
			while(it.hasNext()){
				String key = String.valueOf(it.next());
				if(JsonToMap.get(key).getClass() == net.sf.json.JSONArray.class){//      
					if(JsonToMap.getJSONArray(key).isEmpty()){//       
						RMap.put(key,null);
					}else{
						
						List> MapListObj=new ArrayList>();
						for(Object JsonArray : JsonToMap.getJSONArray(key)){
							HashMap TempMap = new HashMap();
							if(JsonArray.getClass() == String.class){
								TempMap.put(key, JsonArray);
							}else{
								TempMap.putAll(IteratorHash(net.sf.json.JSONObject.fromObject(JsonArray)));
							}					
							MapListObj.add(TempMap);
						}					
						RMap.put(key, (Object) MapListObj);
					}
				}else if(JsonToMap.get(key).getClass() == net.sf.json.JSONObject.class){
					
					RMap.put(key,JsonToMap.getJSONObject(key));
					
				}else if(JsonToMap.get(key).getClass() == String.class || JsonToMap.get(key).getClass() == Integer.class || JsonToMap.get(key).getClass() == Long.class){
					
					RMap.put(key, JsonToMap.get(key));
					
				}
			}
			return RMap;
		}

テスト
 public static void main(String[] args) {
		 String jsonStr = "{"
					+ "\"list1\":"
				    + "[{"
					+ "\"name\":\"daniel\","
					+ "\"age\":\"20\""
					+"},"
					+ "{"
					+"\"name\":\"alisa\","
					+"\"age\":\"18\"" 
					+"}],"
					+ "\"list2\":"
					+ "[{"
					+ "\"name\":\"tom\","
					+ "\"age\":\"22\""
					+"},"
					+ "{"
					+"\"name\":\"ysabell\","
					+"\"age\":\"23\"" 
					+"}],"
					+ "\"hello\": \"java \"" 
					+ "}";
		 
		 JSONObject objJson = JSONObject.fromObject(jsonStr);
		 
		/*  、*/
	//   JsonTest.analysisJson(objJson);
		 
		 /*  、*/
	//	 System.out.println(JsonTest.IteratorHash(objJson));
		 
		 /*  、  FastJson        */
		 Map maps = (Map)JSON.parse(jsonStr);  
		 System.out.println(maps);

	}

三、FastJsonアリのオープンソースフレームワーク

		
		    com.alibaba
		    fastjson
		    1.2.52
		

特徴:
1.FastJsonは数度が速く、シーケンス化と逆シーケンス化にかかわらず、恥じないfast 2である.強力な機能(通常のJDKクラスをサポートするJava Bean Class、Collection、Map、Dateまたはenumを含む)3.ゼロ依存(他のクラスライブラリに依存しない)
FastJsonのjson形式文字列の解析には主に次の3つのクラスが用いられる.JSON:fastJsonの解析器で、JSON形式文字列とJSONオブジェクトおよびjavaBeanとの間の変換に使用する.JSONObject:fastJsonが提供するjsonオブジェクト3.JSOnArray:fastJsonはjson配列オブジェクトを提供する
使用方法は、他の記事などを参照してください.https://blog.csdn.net/flysun3344/article/details/54707965
                                        https://segmentfault.com/a/1190000011212806