java - 使用 org.json 库比较 Java 中的 JSON 对象

标签 java json

我在java中使用org.json库来读取我的java程序中的json文件。我编写了以下方法来使用 equals 方法比较两个 JSON 对象。然而,即使两个对象相同,它也总是返回 false。

private boolean isContentEqual(JSONObject o1, JSONObject o2) {
    boolean isContentEqual = false;
    try {
        JSONArray contentArray1 = o1.getJSONArray("content");
        JSONArray contentArray2 = o2.getJSONArray("content");
        if (contentArray1.equals(contentArray2))
            isContentEqual = true;
        else
            isContentEqual = false;
    }
    catch (Exception e) {
        e.printStackTrace();
    }
    return isContentEqual;
}

当我运行此方法时,它总是返回false

我正在比较的 json 对象是

content: [
    {
        one: "sample text 1",
        two: ""
    },
    {
        one: "sample text 2",
        two: ""
    },
    {
        one: "sample text 3",
        two: ""
    },
    {
        one: "sample text 4",
        two: ""
    }
]

为什么会发生这种情况?

最佳答案

你用JSON-Java吗?图书馆?

JSONArray 没有实现 equals() 因此

if(contentArray1.equals(contentArray2))

如果 contentArray1 != contentArray2 则始终返回 false。

奇怪的是,你需要使用 JSONArray 定义的imilar()方法才能使其工作:

if(contentArray1.similar(contentArray2))

关于java - 使用 org.json 库比较 Java 中的 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31440110/

相关文章:

java - 无法将文本从单独的类追加到 JTextArea - Java

java - 存在克隆方法时复制构造函数的用途?

java - 如何从Firebase数据库中删除Geofire key -JAVA

json - 在 FastAPI 应用程序中将 JSON 转换为 DataFrame

json - 在 App Engine 中将 *bytes.Buffer 转换为 json 和 Unmarshal

javascript - 通过 JSON 获取 Javascript 中单个视频(非提要)的 Youtube 信息

java - 选择对链接列表进行排序

java - NoClassDefFoundError 错误代码

javascript - 应该使用 jQuery 的 parseJSON/getJSON 方法吗?

java - 如何使用Extjs进行ajax调用以从jsp中的数据库获取数据?