我们如何比较JSON对象的数组?

时间:2018-03-16 12:01:23

标签: java arrays json

我有两个对象

 "Conditions1": [
    {
       "fieldToken": "value1",
       "uniqueName": "value2",
       "conditionOperator": ">",
       "conditionValue": "value3"
     },
     {
       "fieldToken": "value1",
       "uniqueName": "value2",
       "conditionOperator": "==",
       "conditionValue": "value3"
     }
  ]

 "Conditions2": [
     {
       "fieldToken": "value1",
       "uniqueName": "value2",
       "conditionOperator": ">",
       "conditionValue": "value3"
      },
      {
        "fieldToken": "value1",
        "uniqueName": "value2",
        "conditionOperator": "==",
        "conditionValue": "value3"
      }
  ]

我想比较这两个对象是否相等。两个对象都是相同的,但是当我使用equals方法时,它返回false。我如何比较json对象的数组?

2 个答案:

答案 0 :(得分:0)

如果使用包org.json,就会出现JSONObject这样的问题。您创建一个JSONObject:

import org.json.JSONObject;

    JSONObject firstJson = new JSONObject();
    JSONObject secondJson = new JSONObject();
    firstJson.put("test1", "value1");
    secondJson.put("test1", "value1");  // change value1 to something else to test
    boolean result = firstJson.similar(secondJson);
    System.out.println("result: " + result);   

更改value1或要测试的任何值。它将根据您的测试值打印真或假。源代码说:"它们必须包含必须与相似值相关联的同一组名称。"可在此处找到来源:https://github.com/stleary/JSON-java/blob/master/JSONObject.java

要测试JSONObjects数组,请使用同一个包中的JSONArray,并将数组拆分为单个JSONObjects以进行比较。

答案 1 :(得分:-1)

因为你有两个对象。 把它放在两个变量中,然后为它们制作字符串。

e.g。

    var a = Conditions1.toString();
    var b = Conditions2.toString();

    if(Conditions1.toString() === Conditions2.toString()){
        console.log("matched")
     }

注意:只有当两个对象相同时才会匹配以上两个。