比較兩個json,key值相同的情況下判斷另一個json的value值是否為空(遞迴)
阿新 • • 發佈:2018-12-12
前言:作為一個Java的初學者,第一個寫部落格,如有不當之處請多多指教。我是在檢驗報文的必輸項的情況下寫的該方法。
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONArray; public class JsonTest { static String rerort = "{" + "\"reqSn\":\"\"," + "\"type\":\"\"," + "\"docList\":{" + "\"doc\":[{" + "\"docTyp\":\"\"," + "\"docId\":\"\"," + "\"docKind\":\"\"" + "}]" + "}," + "\"message\":{" + "\"sessionId\":\"\"," + "\"transactionType\":\"\"," + "\"transactionId\":\"\"," + "\"timetamp\":\"\"," + "\"basicInfo\":{" + "\"picid\":\"\"," + "\"bankcard\":\"\"," + "\"name\":\"\"," + "\"phonenumber\":\"\"}," + "\"expending\":{" + "\"cashAmount\":\"\"," + "\"resonCode\":\"\"," + "\"risCode\":\"\"," + "\"orderId\":\"\"}}},"; static String rerort1 = "{" + "\"reqSn\":\"sasdv\"," + "\"type\":\"vra\"," + "\"docList\":{" + "\"doc\":[{" + "\"docTyp\":\"sfai\"," + "\"docId\":\"34623\"," + "\"docKind\":\"weijfioj\"" + "}]" + "}," + "\"message\":{" + "\"sessionId\":\"2455\"," + "\"transactionType\":\"sfae\"," + "\"transactionId\":\"5235\"," + "\"timetamp\":\"\"," + "\"basicInfo\":{" + "\"picid\":\"2423\"," + "\"bankcard\":\"23545\"," + "\"name\":\"sdfs\"," + "\"phonenumber\":\"\"}," + "\"expending\":{" + "\"cashAmount\":\"\"," + "\"resonCode\":\"43343\"," + "\"risCode\":\"66677\"," + "\"orderId\":\"\"}}},"; static JSONObject jsboj = JSONObject.parseObject(rerort); static JSONObject jsboj1 = JSONObject.parseObject(rerort1); public static void main(String[] args) { jsonAorO(jsboj,jsboj1); } public static void jsonAorO(Object j1,Object j2){ if (j1 instanceof JSONObject) { for(String dataKey :((JSONObject) j1).keySet()){ if(((JSONObject) j2).containsKey(dataKey)){ System.out.println(dataKey +"輸出結果為空"); }else{ if(((JSONObject) j2).get(dataKey) instanceof JSONObject){ jsonAorO(((JSONObject) j1).getJSONObject(dataKey),((JSONObject) j2).getJSONObject(dataKey)); }else{ if(((JSONObject) j2).get(dataKey) instanceof JSONArray){ jsonAorO(((JSONObject) j1).getJSONObject(dataKey),((JSONObject) j2).getJSONObject(dataKey)); } } } } } if(j1 instanceof JSONArray){ if(((JSONArray) j1).size() > 0){ for(int i = 0;i<((JSONArray) j1).size();i++){ JSONObject job1 = ((JSONArray) j1).getJSONObject(i); for(int j =0;j<((JSONArray) j2).size();j++){ JSONObject job2 = ((JSONArray) j2).getJSONObject(j); jsonAorO(job1, job2); } } } } } }