如何比较两个JSON对象或字符串以获取它们之间的差异报告(JAVA)

时间:2018-09-25 12:24:44

标签: java json

我有这种方法,可以从参数接收的目录中创建JSON树:

 public static void generateReport(File dir, JSONArray content) throws IOException, ParseException {
        File listFile[] = dir.listFiles();
        String md5;
        if (listFile != null && listFile.length > 0) {
            for (int i = 0; i < listFile.length; i++) {
                JSONObject obj = new JSONObject();
                content.add(obj);
                if (listFile[i].isDirectory()) {
                    md5 = md5OfString(listFile[i].getAbsolutePath());
                    obj.put("md5", md5);
                    obj.put("type", "folder");
                    obj.put("path", listFile[i].getAbsolutePath());
                    JSONArray contentSon = new JSONArray();
                    obj.put("Content", contentSon);
                    generateReport(listFile[i], contentSon);
                    //numDir++;
                } else if (listFile[i].isFile()) {
                    md5 = md5OfFile(listFile[i]);
                    obj.put("md5", md5);
                    obj.put("type", "file");
                    obj.put("path", listFile[i].getAbsolutePath());
                    //numFiles++;
                }
            }
        }
    }

如果我两次调用此方法,它将从两个不同的目录中创建两个不同的JSON!我需要做的是比较这两个JSON,并获得一个新的JSON与这两个JSON之间的区别。

差异JSON示例:

{
    "root": "/u/data/Coldview/apps",
    "origin-report": "informe.json",
    "diff": [
        {
            "type": "folder",
            "path": "ldf.web.ejecuciondeprotestos",
            "origin-md5": ".........",
            "destination-md5": "........."
        },
        {
            "type": "folder",
            "path": "ldf.web.ejecuciondeprotestos/lib",
            "origin-md5": ".........",
            "destination-md5": "........."
        },
        {
            "type": "file", 
            "name": "AMCOX.Core.jar", 
            "origin-md5": ".........",
            "destination-md5": "........."
        }
    ]
}

我正在使用JAVA 7和json-simple库来处理JSON,但是没有什么可以做的。

import org.json.simple.JSONArray;
import org.json.simple.Jr.JSONParser;
import org.json.simple.parser.ParseException;SONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

0 个答案:

没有答案