【问题标题】:How to get all keys from a JSON-Object as a String array in Java如何从 JSON 对象中获取所有键作为 Java 中的字符串数组
【发布时间】:2018-10-15 10:42:50
【问题描述】:

我有一个从 .json 文件创建的 JSON 对象,该文件如下所示:
{
  "key1": {
    "key2": "value2",
    "key3": "value3",
  }
}

要生成我使用的 JSON 对象:

JSONObject newJSON = new JSONObject(content);

我要做的是生成一个字符串数组,其中包含现有 JSONObject 的所有键,以便轻松访问它们。

【问题讨论】:

标签: java json


【解决方案1】:

JSONObject 实现了 Map 接口,因此您可以使用与 Map 相同的方式来生成键列表。特别是,您可以使用.keySet().entrySet() 方法。

例如(改编自here):

JSONObject jsonObj = ...;
List<String> l = new ArrayList<String>(jsonObj.keySet());

【讨论】:

  • 这个答案不正确。 jsonObj.keySet() 给我一个错误“无法解析 'JSONObject' 中的方法 'keySet'”。
【解决方案2】:
         You could iterate through the keys.
          JSONObject newUserJSON = new JSONObject(content);
          ArrayList<String> keys = new ArrayList<>();
          String key;

          for (Iterator<String> it = newUserJSON.keys(); it.hasNext(); ) {
             key = it.next();
             keys.add(key);
           }
      And also you need to take care of nested json Object for each key.

【讨论】:

    【解决方案3】:

    这个问题的答案已经在另一个 SO 线程中可用:Convert string to JSON array

    这是您的用例的等价物:

    JSONObject jsnobject = new JSONObject(content);
    
    JSONArray jsonArray = jsnobject.getJSONArray("key1");
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject explrObject = jsonArray.getJSONObject(i);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-07
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多