Java 比较2个JSONObject,不考虑值类型
我使用的是抛弃,用一些字符串生成JSONObject 我想获得一个JSONObject(j1)中所有键的列表,并将这些值与附加到另一个JSONObject(j2)中键的值进行比较 我试图创建一些我不关心值类型的东西,因为值是字符串和整数,谁知道还有什么 所以我做了一些类似的事情: 我想做一些像Java 比较2个JSONObject,不考虑值类型,java,jettison,Java,Jettison,我使用的是抛弃,用一些字符串生成JSONObject 我想获得一个JSONObject(j1)中所有键的列表,并将这些值与附加到另一个JSONObject(j2)中键的值进行比较 我试图创建一些我不关心值类型的东西,因为值是字符串和整数,谁知道还有什么 所以我做了一些类似的事情: 我想做一些像 Object o1 = j1.get("key") Object o2 = j2.get("key") 我可以将o1和o2转换成什么,以便比较它们的值?JSONObject?如果这些值是JSONArra
Object o1 = j1.get("key")
Object o2 = j2.get("key")
我可以将o1和o2转换成什么,以便比较它们的值?JSONObject?如果这些值是JSONArray呢
我尝试了JSONObject,得到了一个
"ClassCastException org.codehaus.jettison.json.JSONObject$Null cannot be cast to org.codehaus.jettison.json."
当我有:
{"key1":null, .....
我有什么选择呢?假设您正在比较相等的值(而不是,比如,关于某些顺序),您可以只使用
对象。相等
:
o1.equals(o2)
因为签名即使在扩展对象的类中也是
public boolean equals(Object other)
因此,您可以将任何对象与任何其他对象进行比较,无需进行转换或显式转换(不过,equals
的实现可能会在内部进行转换)
如果其中一个或两个可以为null,则可以使用java.util.Objects.equals
来避免潜在的NPE:
Objects.equals(o1, o2)
杰出的这很有效。但是,如果一个JSONObject有{“key1”:“100”,另一个有{“key1”:100(一个有字符串值,一个有int值),我该怎么办?