【问题标题】:compare 2 JSONObjects without regard to value types比较 2 个 JSONObjects 而不考虑值类型
【发布时间】:2015-10-15 22:38:32
【问题描述】:

我正在使用 Jettison 从一些字符串中生成 JSONObjects

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

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

所以我正在做类似的事情:

我想做类似的事情

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

我可以将 o1 和 o2 转换成什么,以便比较它们的值? JSON对象?如果值是 JSONArrays 怎么办?

我已经尝试过 JSONObject,我得到了一个

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

当我有:

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

我有什么选择?

【问题讨论】:

    标签: java jettison


    【解决方案1】:

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

    o1.equals(o2)
    

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

    public boolean equals(Object other)
    

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

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

    Objects.equals(o1, o2)
    

    【讨论】:

    • 太棒了!这样可行。但是如果一个 JSONObject 有 {"key1":"100" 而另一个有 {"key1":100 (一个有一个 String 值,一个有一个 int 值),我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 2013-09-01
    • 1970-01-01
    • 2014-01-10
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多