Java 从JsonObject提取所有名称元素

Java 从JsonObject提取所有名称元素,java,arrays,json,Java,Arrays,Json,我无法从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&q

我无法从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());
    }
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);
    }
}
但是当我这样做的时候,我收到了与之前发布的相同的行。有人能看出我哪里出错了吗?我正在使用google.gson库进行Java

编辑:我之前有一个类似的问题,在那里我收到了这种类型的字符串:

{"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",..}
其中,这些项目编号映射到项目名称。但是,这是一个大型阵列,我通过这样做解决了这个问题:

// 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());
    }
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=itemIDData[0];
JsonObject JsonObject=JsonParser.parseString(jsonString.getAsJsonObject();
设置keySet=jsonObject.keySet();
List listJsonObjectKeys=new ArrayList();
//现在,我们将jsonObject中的每个键添加到一个列表中,以便使用ID(键)。
用于(对象键:键集){
添加(key.toString());
}
对于(int i=0;i
我尝试使用与我发布的问题类似的逻辑,但在提取所需信息时遇到了问题。

这就是您想要的:

    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\'u game\'u 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 keys=jsonObject.getAsJsonObject(“开始游戏项目”).keySet();
系统输出打印项次(按键);
=> [11, 14, 16, 20, 27, 34, 39, 42, 44, 181, 237, 241]

非常感谢,这很有效!正是我需要的!!