我有这种方法,可以从参数接收的目录中创建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;