首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用java使两个json对象相对于json路径相等或不相等

如何使用java使两个json对象相对于json路径相等或不相等
EN

Stack Overflow用户
提问于 2018-09-20 23:59:14
回答 1查看 846关注 0票数 1

我想比较两个json对象,在json路径的帮助下,它们在结构上是否相同。我不考虑值,只是提前structure.Thank你有任何帮助例如下面两个json文件json-1和json-2,两者在结构上是相同的,但你可以看到值是不同的。

json-1

代码语言:javascript
复制
{
  "squadName": "Super hero squad",
  "homeTown": "Metro City",
  "formed": 2016,
  "secretBase": "Super tower",
  "active": true,
  "members": [
    {
      "name": "man1",
      "age": 50,
      "secretIdentity": "Dan",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "Madame Uppercut",
      "age": 39,
      "secretIdentity": "Jane Wilson",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }    
  ]
}

json-2

代码语言:javascript
复制
{
  "squadName": "Super hero1",
  "homeTown": "Metro City",
  "formed": 2016,
  "secretBase": "Super tower",
  "active": true,
  "members": [
    {
      "name": "Man2",
      "age": 33,
      "secretIdentity": "Jukes",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "Madame Uppercut1111",
      "age": 30,
      "secretIdentity": "ran",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }    
  ]
}

下面两个json具有不同的结构:

代码语言:javascript
复制
{
  "squadName": "Super hero1",
  "homeTown": "Metro City",
  "formed": 2016,
  "secretBase": "Super tower",
  "active": true,
  "members": [
    {
      "name": "Man2",
      "age": 33,
      "secretIdentity": "Jukes",
      "powers": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name": "Madame Uppercut1111",
      "age": 30,
      "secretIdentity": "ran",
      "powers": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }    
  ]
}

and 


{
  "Name": "Super hero1",
  "Town": "Metro City",
  "year": 2016,
  "base": "Super tower",
  "IsActive": true,
  "associates": [
    {
      "name1": "Man2",
      "age1": 33,
      "secretIdentity1": "Jukes",
      "powers1": [
        "Radiation resistance",
        "Turning tiny",
        "Radiation blast"
      ]
    },
    {
      "name1": "Madame Uppercut1111",
      "age1": 30,
      "secretIdentity1": "ran",
      "powers1": [
        "Million tonne punch",
        "Damage resistance",
        "Superhuman reflexes"
      ]
    }    
  ]

我已经编写了前面提到的来自两个json对象的below.Getting键的代码,并通过比较both.Wanted来验证我的逻辑是否正确。

代码语言:javascript
复制
    List<String>list4 =printJsonObject(obj);
    List<String>list5 =printJsonObject(obj1);

    if(list5.containsAll(list4)){
        boolean res=true;
          System.out.println("res"+res);

    }




  public static List printJsonObject(JSONObject jsonObj) throws 
     JSONException {
            Iterator keys = jsonObj.keys();
             List<String> jsonKeys=new ArrayList<String>();

           while(keys.hasNext()){

                //based on you key types
                Object keyObj = (String)keys.next();
                Object keyvalue = jsonObj.get(keyObj.toString());
                jsonKeys.add(keyObj.toString());  
                //for nested objects iteration if required

                if (keyvalue instanceof JSONObject)
                    printJsonObject((JSONObject)keyvalue);
            }

           return jsonKeys;
   }
EN

回答 1

Stack Overflow用户

发布于 2018-09-21 00:12:51

如果结构是一致的,您可以做的一件事是尝试通过将这些JSON对象映射到类来转换它们。如果它发现任何其他键不存在,它将引发异常,并通过捕获它,您知道它们具有不同的结构。这在默认情况下是启用的,可以使用注释@JsonIgnoreProperties(ignoreUnknown = true)禁用它,并尝试使用它。

这样做的一个好方法是添加Jackson库this is a good link tutorial并执行以下操作:

代码语言:javascript
复制
class Foo {
    @JsonProperty("squadName") String name;
    // (other props...) 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52429024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档