1. 程式人生 > >比較兩個json,key值相同的情況下判斷另一個json的value值是否為空(遞迴)

比較兩個json,key值相同的情況下判斷另一個json的value值是否為空(遞迴)

前言:作為一個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);
                    }
                }
            }
        }
    }
    
}