【问题标题】:Concatenate JSONArrays连接 JSONArrays
【发布时间】:2011-06-03 05:00:48
【问题描述】:

我在org.json 包下使用JSONArray

我的第一个 JSONArray 是这样的:

[["249404","VPR249404"],["249403","VPR249403"],["249391","M249391"]]

第二个

[["249386","M249386"],["249385","M249385(I)"],["249384","I249384"]]

所以我想将新的 JSONArray 附加到我的第一个 JSONArray。

我正在研究 Java 和 Android。我听说过 google-gson 库,但我不知道它是否可以帮助我,但我不希望我的 Android 应用程序中有任何其他依赖项。

【问题讨论】:

    标签: java android arrays json concatenation


    【解决方案1】:

    我会尝试这样的事情:

    private JSONArray concatArray(JSONArray arr1, JSONArray arr2)
            throws JSONException {
        JSONArray result = new JSONArray();
        for (int i = 0; i < arr1.length(); i++) {
            result.put(arr1.get(i));
        }
        for (int i = 0; i < arr2.length(); i++) {
            result.put(arr2.get(i));
        }
        return result;
    }
    

    我现在没有要测试的编译器,但你可以试一试,看看它是否有效(或者,至少,它让你知道如何去做)。

    编辑

    此版本可以连接多个数组 (concatArray(arr1, arr2, arr3)):

    private JSONArray concatArray(JSONArray... arrs)
            throws JSONException {
        JSONArray result = new JSONArray();
        for (JSONArray arr : arrs) {
            for (int i = 0; i < arr.length(); i++) {
                result.put(arr.get(i));
            }
        }
        return result;
    }
    

    【讨论】:

    • 如何只保留一次重复值?
    • 首先添加到 Set 和 result.put(Set.toArray) @Pratik Butani
    【解决方案2】:

    试试这个:

    private JSONArray concatArray(@NotNull JSONArray jsArr1, @NotNull JSONArray jsArr2) {
        List<Object> list = jsArr1.toList();
        list.addAll(jsArr2.toList());
        return new JSONArray(list);
    }
    

    【讨论】:

    • org.json.JSONException: JSONArray 初始值应该是字符串或集合或数组。在 org.json.JSONArray.(JSONArray.java:203)
    【解决方案3】:

    使用...

    jarray1.addAll(jarray2);
    

    【讨论】:

    • 虽然此代码可以回答问题,但提供有关 如何为什么 解决问题的附加上下文将提高​​答案的长期价值。
    • JSONArray 不提供 addAll 那个方法。
    猜你喜欢
    • 1970-01-01
    • 2016-05-10
    • 2017-08-07
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2021-06-18
    相关资源
    最近更新 更多