java - 有效地从 JSONArray 中的所有 JSONObject 获取特定键的值?

标签 java json org.json

我需要从 JSONArray 中的所有 JSONObject 获取特定键的值(下面的示例)。

我有一个传统的循环方法,我想知道是否有更好的方法来做到这一点。 也许使用流?

private static Collection<? extends String> someMethod(JSONArray jsonArray) {
    Set<String> setToReturn = new HashSet<>();
    for (int i = 0; i < jsonArray.length(); i++) {
        setToReturn.add(jsonArray.getJSONObject(i).getString("key"));
    }
    return setToReturn;
}

JSON 示例如下:

"someArray": {
    "someObject": [
        {
            "key": "001",
            "key1": "value",
            "key2": "value",
            "key3": "value"
        }
    ],
    "someObject2": [
        {
            "key": "002",
            "key1": "value",
            "key2": "value",
            "key3": "value"
        }
    ],
    "someObject3": [
        {
            "key": "003",
            "key1": "value",
            "key2": "value",
            "key3": "value"
        }
    ],
}

基本上,我需要将每个 JSONObject 中的“键”放入集合或列表中。

Example output: [001, 002, 003]

上面的代码有效,我想知道是否有更好的方法来做到这一点。假设有数千个这样的 JSONObject。我正在使用 org.json 库。

提前致谢。

最佳答案

没有更好的方法可以做到这一点。循环遍历数组的时间复杂度为 O(n),从对象获取值的时间复杂度为 O(1)。显然,您需要访问每个值才能将其添加到列表中,这就是为什么总时间复杂度必须为 O(n)。根据您获得的值,插入列表可能比哈希集稍快,但这是最有效的方法

关于java - 有效地从 JSONArray 中的所有 JSONObject 获取特定键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56693488/

相关文章:

java - 避免在 Java 中使用相同的 try catch block

java - 如何为 List<interface> 返回 List<Impl>

java - 如何使用 Jsoup 和 Gson 提取 JSON 字段

java - java.io.StringReader.<init> 处的线程 "main"java.lang.NullPointerException 中出现异常(来源未知)

java - 使用 volley 从服务器加载图像

ios - UIImage 从 json 请求返回 nil 到 tableView 单元格图像的 mysql 数据库?

java - 迭代 org.json.JSONObject 的值以将不同的操作应用于 JSONObjects 或 JSONArrays

java - Java Visual VM 中的实际运行线程

java - hibernate/SQLException : field doesn't have default value

java - 如何访问从 servlet 传递的 .jsp 中的变量?