Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

262
Vistas
Extraer todos los elementos de nombre de un JsonObject

Tengo problemas para extraer la información adecuada de mi JsonObject. Actualmente, recibo este tipo de cadena de una API web:

 {"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}}

La información que me interesa es cada número dentro de "", por ejemplo, "11", "14" y así sucesivamente. Estos números representan un elemento específico dentro de un juego de computadora, por lo que lo más probable es que varíen de cada cadena de la API web. Actualmente estoy haciendo esto:

 // 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()); }

Pero cuando hago esto, recibo la misma línea que se publicó anteriormente. ¿Alguien puede ver dónde me equivoco? Estoy usando la biblioteca google.gson para Java.

EDITAR: Tuve un problema algo similar anteriormente, donde recibí este tipo de Cadena:

 {"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",..}

Donde estos números de artículo se asignan a un nombre de artículo. Sin embargo, esa fue una matriz grande que resolví haciendo esto:

 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); } }

Traté de usar una lógica similar al problema sobre el que publiqué, pero tengo problemas para extraer la información que necesito.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esto es lo que quieres:

 String jsonString = itemData[0]; JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject(); for ( Entry e : jsonObject.getAsJsonObject( "start_game_items" ).entrySet() ) { System.out.println( e.getKey() ); }
over 4 years ago · Santiago Trujillo Denunciar

0

Si solo busca las claves, entonces puede ser preferible usar 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]
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda