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

使用keySet()从JSONObject提取密钥

竺捷
2023-03-14
问题内容

我正在尝试从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,但是不确定)。

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

谢谢。


问题答案:

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();


 类似资料:
  • 我一直在与服务器使用改型的响应进行斗争。 Logcat正在打印JSONObject,但它在

  • 问题内容: 我正在解决有关作为服务器响应的JSONObject的问题。 正如您在响应中看到的那样,我正在解析JSONObject并创建syncresponse,synckey作为 JSON对象 createdtrs,modtrs,deletedtrs作为 JSONArray 。我想从Deletedtrs访问JSONObject,以便可以将它们分开并使用这些值。即我想提取公司编号,用户名,日期等。

  • 问题内容: 我有如下的JsonObject 如何通过使用Java中的方法从JsonObject中删除Json密钥“电子邮件”及其值 JsonObj.removev为我工作,如果我需要删除状态键 更新资料 更多背景信息,这主要是为了测试休息点。在我的测试中,我使用Builder模式创建了与有效负载匹配的Java对象,然后使用GsonBuilder像这样隐蔽了Json 如果需要删除我使用的必填字段,请

  • 问题内容: 我正在开发一个Android项目,该项目需要JSONObject作为POST请求的主体。放置JSON的键和值后,我得到了以下代码行: 但是服务器得到以下信息: 我已经尝试过JSONStringer,但是它的帮助并不大,因为的请求是。 更新 我不尝试构造JSONObject,因为已经通过使用以下代码行(由@osayilgan给出的代码)完成了此操作: 这不是问题。下述接口用于与服务器通信

  • 在此Map中获取一组键。 语法 (Syntax) Set keySet() 参数 (Parameters) 没有。 返回值 (Return Value) 钥匙套。 例子 (Example) 以下是此方法的使用示例 - class Example { static void main(String[] args) { def mp = ["TopicName" : "Maps

  • 在我的azure app服务中,在app settings下,我添加了一个名为“something”的密钥,它的值指向密钥库的引用,如下所示: 现在,我可以从appsettings中检索值,但它将输出作为而不是实际值 我希望输出是我设置的值,而不是keyvault引用字符串本身。 我正在使用.NET MVC 4.7 web应用程序