当前位置: 首页 > 知识库问答 >
问题:

Java GSON:获取JSONObject下所有键的列表

景正文
2023-03-14

我在Java中使用了GSON作为JSON解析器,但密钥并不总是相同的<例如。我有以下JSON:

{“我已经知道的对象”:{br>“key1”:“value1”,
“key2”:“value2”,
“AnotherObject”:{“anotherKey1”:“anotherValue1”,“anotherKey2”:“anotherValue2”}
}

我已经得到了JSONObject“我已经知道的对象”。现在我需要得到这个对象的所有JSONelement,这将是“Key1”、“Key2”和“AnotherObject”<提前谢谢<编辑:输出应该是一个字符串数组,包含JSONObject的所有键

共有3个答案

陶福
2023-03-14

从Gson 2.8.1开始,您可以使用键集():

String json = "{\"key1\":\"val\", \"key2\":\"val\"}";

JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(json).getAsJsonObject();

Set<String> keys = jsonObject.keySet();
支智志
2023-03-14

由于Java 8,您可以使用流作为外观更好的替代方案:

String str = "{\"key1\":\"val1\", \"key2\":\"val2\"}";

JsonParser parser = new JsonParser();
JsonObject jObj = (JsonObject) parser.parse(str);

List<String> keys = jObj.entrySet()
    .stream()
    .map(i -> i.getKey())
    .collect(Collectors.toCollection(ArrayList::new));

keys.forEach(System.out::println);
喻子航
2023-03-14

您可以使用JsonParser将Json转换为中间结构,以便检查Json内容。

String yourJson = "{your json here}";
JsonElement element = JsonParser.parseString(yourJson);
JsonObject obj = element.getAsJsonObject(); //since you know it's a JsonObject
Set<Map.Entry<String, JsonElement>> entries = obj.entrySet();//will return members of your object
for (Map.Entry<String, JsonElement> entry: entries) {
    System.out.println(entry.getKey());
}
 类似资料:
  • 问题内容: 我已经将GSON作为Java中的JSON解析器,但是键并不总是相同的。 例如。我有以下JSON: {“我已经知道的对象”:{ “ key1”:“ value1”, “ key2”:“ value2”, “ AnotherObject”:{“ anotherKey1”:“ anotherValue1”,“ anotherKey2”:“ anotherValue2”} } 我已经有了JSO

  • 试图获取特定标题下的所有td(单元格) HTML: 方法: 实际结果: java.lang.IndexOutOfBoundsException:索引0超出长度0的边界 预期结果: 返回一个

  • 问题内容: 我如何从使用硒与node.js的下拉菜单中获取所有选项 下面是我的代码: 从上面 我如何获取所有选项并在node.js中执行foreach或使用node.js打印选项值。 提前致谢。 问题答案:

  • 问题内容: 获取Oracle中所有表的列表? 问题答案: 假设您有权访问DBA_TABLES数据字典视图。如果您没有这些特权但需要它们,则可以请求DBA显式授予您对该表的特权,或者请求DBA授予您该SELECT ANY DICTIONARY特权或SELECT_CATALOG_ROLE角色(这两者都将允许您查询任何数据字典表) )。当然,您可能希望排除某些模式,例如SYS和模式,SYSTEM而这些模

  • 我有一个springframework启动应用程序,在这个应用程序上我有很多定时cron,现在我正在创建一个rest控制器(GET),我想在其中获取项目上所有定时cron的列表(元数据) 调度pplication.java 1班。JAVA 2班。JAVA 应用yml 这是我的Rest控制器

  • 我有一个带有主键和排序键的表;因为这是一个复合键,所以我有多个主键与不同的排序键映射。 如何获取与特定主键关联的所有排序键? 我尝试使用“Get”操作,但这似乎也需要排序键(尽管我正在寻找这些键)。我还研究了“BatchGet”操作,但这是针对多个不同的键,而不是针对具有多个不同排序键的单个主键。 我也尝试过“查询”,但没有成功,但我对这一点了解较少,所以这可能就是解决方案——是这样吗?我还知道,