当前位置: 首页 > 面试题库 >

测试两个JSON对象是否相等,忽略Java中的子顺序

周高畅
2023-03-14
问题内容

我正在寻找一个JSON解析库,该库支持比较两个JSON对象(忽略子顺序),特别是对从Web服务返回的JSON进行单元测试。

任何主要的JSON库都支持吗?org.json库仅进行参考比较。


问题答案:

作为一般的体系结构要点,我通常建议不要让对特定序列化格式的依赖性超出存储/网络层的范围。因此,我首先建议你考虑测试自己的应用程序对象之间的相等性,而不是它们的JSON表现形式。

话虽如此,我目前是Jackson的忠实拥护者,我对他们的ObjectNode.equals()实现的快速阅读显示了你想要的集合成员资格比较:

public boolean equals(Object o)
{
    if (o == this) return true;
    if (o == null) return false;
    if (o.getClass() != getClass()) {
        return false;
    }
    ObjectNode other = (ObjectNode) o;
    if (other.size() != size()) {
        return false;
    }
    if (_children != null) {
        for (Map.Entry<String, JsonNode> en : _children.entrySet()) {
            String key = en.getKey();
            JsonNode value = en.getValue();

            JsonNode otherValue = other.get(key);

            if (otherValue == null || !otherValue.equals(value)) {
                return false;
            }
        }
    }
    return true;
}


 类似资料:
  • 我有一个公司对象与不同的部门和员工。我已经成功地序列化了我的对象,并将它再次加载到我的程序中。 现在我想测试一下这两个对象在结构上是否相等。java是否为我提供了一个比较这些对象的工具? 我应该补充一点,我的对象有一个用其他对象填充的列表。 还是我必须为此编写自己的测试? 编辑: 现在我想比较一下t和t1,如果它们的值相同的话。

  • 问题内容: 在java中如何比较两个对象是否相等?何时使用equals和hashcode? 问题答案: 理论(针对语言律师和数学倾向者): (javadoc)必须定义一个等价关系(它必须是自反的,对称的和可传递的)。另外,它必须是一致的(如果未修改对象,则它必须保持返回相同的值)。此外,必须始终返回false。 (javadoc)也必须是一致的(如果未根据修改对象equals(),则它必须保持返回

  • 我有一个Java类,下面是一个示例:

  • 我有两个arraylist。employee类和user类的ArrayList。employee类将name、age、address作为字段。用户类将名称、年龄、地址作为字段。下面是两个列表 要检查用户是否和员工的地址相同。如果用户没有地址,则从员工处复制。

  • 本文向大家介绍检查两个StringBuilder对象在C#中是否相等,包括了检查两个StringBuilder对象在C#中是否相等的使用技巧和注意事项,需要的朋友参考一下 要检查两个StringBuilder对象是否相等,代码如下- 示例 输出结果 这将产生以下输出- 示例 让我们看另一个例子- 输出结果 这将产生以下输出-

  • 本文向大家介绍JavaScript比较两个对象是否相等的方法,包括了JavaScript比较两个对象是否相等的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript比较两个对象是否相等的方法。分享给大家供大家参考。具体如下: 在Python中可以通过cmp()内建函数来比较两个对象所包涵的数据是否相等(数组、序列、字典)。但是在javascript语言中并没有相关的实现。