正在从JsonObject中提取所有名称元素



我在从JsonObject中提取正确的信息时遇到问题。目前,我正在从Web API接收这种类型的字符串:

{"start_game_items":{"11":98,"14":39,"16":120,"20":51,"27":60,"34":2,"39":5,"42":4,"44":98,"181":4,"237":13,"241":5}}

我感兴趣的信息是"s、 例如";11〃"14〃;等等这些数字表示计算机游戏中的特定项目,因此它们很可能与Web API中的每个字符串不同。目前我正在做这个:

// below is the String that I displayed in the top "{"start_game_item":{"11"..}""
String jsonString = itemData[0];
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
Set entrySet = jsonObject.entrySet();
Object[] items = entrySet.toArray();
for (Object o : items) {
System.out.println(o.toString());
}

但当我这样做的时候,我会收到与之前发布的相同的行。有人看到我哪里错了吗?我正在使用适用于Java的google.gson库。

编辑:我之前遇到过类似的问题,我收到了这种类型的字符串:

{"1":"blink","2":"blades_of_attack","3":"broadsword","4":"chainmail","5":"claymore","6":"helm_of_iron_will","7":"javelin","8":"mithril_hammer","9":"platemail","10":"quarterstaff",..}

其中这些项目编号映射到项目名称。然而,这是我通过这样做解决的一个大阵列:

String jsonString = itemIDData[0];
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
Set keySet = jsonObject.keySet();
List<String> listJsonObjectKeys = new ArrayList<String>();
// Now we add each Key from the jsonObject to a List, so we can use the ID(Key).
for (Object key : keySet) {
listJsonObjectKeys.add(key.toString());
}
for (int i = 0; i < keySet.size(); i++) {
String currentIDString = listJsonObjectKeys.get(i);
JsonElement currentItem = jsonObject.get(currentIDString);
String itemName = currentItem.getAsString();
int currentID = Integer.parseInt(currentIDString);
itemIDMap.put(currentID, itemName);
}
}

我试图使用与我发布的问题类似的逻辑,但在提取我需要的信息时遇到了问题。

这就是您想要的:

String jsonString = itemData[0];
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
for ( Entry e : jsonObject.getAsJsonObject( "start_game_items" ).entrySet() ) {
System.out.println( e.getKey() );
}

如果您只在键后面,那么最好使用JsonObject#keySet()

String jsonString = "{"start_game_items":{"11":98,"14":39,"16":120,"20":51,"27":60,"34":2,"39":5,"42":4,"44":98,"181":4,"237":13,"241":5}}";
JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
Set<String> keys = jsonObject.getAsJsonObject("start_game_items").keySet();
System.out.println(keys);
=> [11, 14, 16, 20, 27, 34, 39, 42, 44, 181, 237, 241]

最新更新