比较2个JSONObjects而不考虑值类型

时间:2015-10-15 22:38:33

标签: java jettison

我正在使用Jettison从一些字符串

中制作JSONObjects

我想获取一个JSONObject(j1)中所有键的列表,并将这些值与附加到另一个JSONObject(j2)中的键的值进行比较。

我正在尝试创建一些我不关心值的类型的东西,因为值是字符串和int并且谁知道还有什么。

所以我做的事情是:

我想做点什么

Object o1 = j1.get("key")
Object o2 = j2.get("key")

我可以转换o1& o2进入所以我可以比较他们的价值观? JSONObject的?如果值是JSONArrays会怎么样?

我尝试了JSONObject,然后得到了

"ClassCastException org.codehaus.jettison.json.JSONObject$Null cannot be cast to org.codehaus.jettison.json." 

当我有:

{"key1":null, .....

我有什么选择?

1 个答案:

答案 0 :(得分:0)

假设您正在比较相等的值(而不是相对于某些排序),您可以使用Object.equals

o1.equals(o2)

因为即使在扩展Object的类中,签名也是

public boolean equals(Object other)

所以你可以将任何对象与任何其他对象进行比较,不需要转换或显式转换(equals的实现可能会在内部进行转换)。

如果其中一个或两个都可以为null,则可以使用java.util.Objects.equals来避免潜在的NPE:

Objects.equals(o1, o2)