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

xggvc2p6  于 2022-11-06  发布在  Java
关注(0)|答案(4)|浏览(226)

我在Java中使用了GSON作为JSON解析器,但是键并不总是相同的。
例如,我有以下JSON:
{“我已经知道的对象”:{
“键1”:“值1”,
“键2”:“值2”,
“另一个对象”:{“另一个关键字1”:“另一个值1,”“另一个关键字2”:“另一个值2”}
}
我已经得到了JSONObject“我已经知道的对象”。现在我需要得到这个对象的所有JSONElements,这将是“Key 1”,“Key 2”和“AnotherObject”。
先谢谢你。
编辑:输出应为包含JSONObject的所有键的字符串数组

mrwjdhj3

mrwjdhj31#

您可以使用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());
}
km0tfn4u

km0tfn4u2#

从Java 8开始,您可以使用Streams作为外观更好的替代方案:

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);
9o685dep

9o685dep3#

从Gson 2.8.1开始,您可以使用keySet()

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

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

Set<String> keys = jsonObject.keySet();
wz1wpwve

wz1wpwve4#

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

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

        List<String> keys = new ArrayList<String>();
        for (Entry<String, JsonElement> e : jObj.entrySet()) {
            keys.add(e.getKey());
        }

        // keys contains jsonObject's keys

相关问题