我正在处理JSON文件以比较它们的数据。我只想检查1 json的值是否与2 json文件的值相同。 两者的键名和顺序相同。
JSON文件数据如下:
{ "ab_property": [ { "name": "abc", "value": "1" },
答案 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);