如何在Java中比较2个JSON文件的值

时间:2018-10-25 07:21:25

标签: java json comparison

我正在处理JSON文件以比较它们的数据。我只想检查1 json的值是否与2 json文件的值相同。 两者的键名和顺序相同。

JSON文件数据如下:

{   "ab_property": [
{
  "name": "abc",
  "value": "1"
},

2 个答案:

答案 0 :(得分:2)

我已经解决了您的问题。您也可以使用键而不是for循环来直接匹配值。

import java.io.FileReader;
import java.util.Set;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

public class compareJsonFile {

    public static void main(String[] args) throws Exception {
        JSONParser parser = new JSONParser();
        try {
            Object obj = parser.parse(new FileReader("/home/chandrakant/Desktop/json1.json"));
            Object obj1 = parser.parse(new FileReader("/home/chandrakant/Desktop/json2.json"));
            JSONObject jsonObject = (JSONObject) obj;
            JSONObject jsonObject1 = (JSONObject) obj1;
            Set<String> s = jsonObject.keySet();
            for (String str : s) {
                System.out.println("key:" + str + " : value1:" + jsonObject.get(str) + ":value2:" + jsonObject1.get(str));
                //compare value of json1 with json2
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

如果有什么遗漏,请给我评论。

答案 1 :(得分:2)

JSONassert是一个流行的库,用于比较JSON对象。如果两个文件(键和值)相同,则适合您的用例。

使用org.apache.commons.io.IOUtils读取文件的示例:

String expected = IOUtils.toString(new File("/path/to/expected").toURI(), Charset.defaultCharset()));
String actual = IOUtils.toString(new File("/path/to/actual").toURI(), Charset.defaultCharset()));
JSONAssert.assertEquals(expected, actual, false);