一尘不染

使用keySet()从JSONObject提取密钥

json

我正在尝试从JSON对象提取密钥。在这种情况下,JSON对象是通过对名为 SkyRock的 社交网站的API调用获得的,如下所示:

{
  "max_page": 2,
  "posts":  {
    "3111623007":  {
      "id_post": 3111623007,
      "media_align": "float_left",
      "tags":  [],
      "nb_comments": 24
    },
    "3114564209":  {
      "id_post": 3114564209,
      "media_align": "float_left",
      "tags":  [],
      "nb_comments": 33
    },
    "3116902311":  {
      "id_post": 3116902311,
      "media_align": "float_left",
      "tags":  [],
      "nb_comments": 29
    }
  }
}

我基本上想将所有 post_id 值存储在ArrayList中。为了做到这一点,我试图从JSON对象中提取 密钥 ,并按如下方式进行:

JSONObject posts = (JSONObject) jo.get("posts");
ArrayList<String> keys = (ArrayString<String>) posts.keyset();

问题是无法找到合适的变量类型,在其中我可以存储从 keyset() 方法获得的结果。

我尝试搜索答案,但是在大多数情况下,使用 keys()
来提取密钥(由于某种原因该密钥无法使用,我认为这可能是因为正在使用org.json.simple,但是不确定)。

任何人都可以在这里帮助我找到问题的解决方案或任何其他检索键值的方法吗?

谢谢。


阅读 1152

收藏
2020-07-27

共1个答案

一尘不染

Javadoc说:

public interface JsonObject
extends JsonStructure, Map<String,JsonValue>

因此,JSONObject是一个Map,其键的类型为String,其值的类型为JSONValue

和的javadocMap<K, V>.keySet()说:

Set<K> keySet()

Returns a Set view of the keys contained in this map

因此,JSONObject.keySet()返回的是一个Set<String>(这很合逻辑,因为JSON对象的键是字符串)。

因此,您所需要做的就是:

Set<String> keys = posts.keySet();
2020-07-27