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

324
Vistas
Dividir datos en un archivo JSON según un valor clave usando Java

Tengo un archivo json con una variedad de elementos de productos que quiero dividir en función de la categoría del elemento. Este es mi archivo json.

 { "items":[ { "item-id": 123, "name": "Cheese", "price": 8, "category": "Dairy" }, { "item-id": 124, "name": "Milk", "price": 23, "category": "Dairy" }, { "item-id": 125, "name": "Chicken", "price": 100, "category": "Meat" }, { "item-id": 126, "name": "Fish", "price": 45, "category": "Meat" } ] }

quiero dividirlos así,

 [ { "category":"Dairy", "items":[ { "item-id": 123, "name": "Cheese", "price": 8, "category": "Dairy" }, { "item-id": 124, "name": "Milk", "price": 23, "category": "Dairy" } ] }, { "category":"Meat", "items":[ { "item-id": 125, "name": "Chicken", "price": 100, "category": "Meat" }, { "item-id": 126, "name": "Fish", "price": 45, "category": "Meat" } ] } ]

este es el código que probé hasta ahora pero no puedo encontrar la manera de dividirlos como quería, estoy usando java y también soy nuevo en java

 import java.io.*; import java.util.*; import org.json.simple.*; import org.json.simple.parser.*; public class ReadOrderDetails { @SuppressWarnings("unused") public static void main(String[] args) { JSONParser parser = new JSONParser(); JSONObject subOrder = new JSONObject(); JSONArray gitems = new JSONArray(); JSONArray subOrders = new JSONArray(); try { Object obj = parser.parse(new FileReader("order-details.json")); JSONObject jsonObject = (JSONObject)obj; String orderId = (String)jsonObject.get("orderId"); JSONArray items = (JSONArray)jsonObject.get("items"); @SuppressWarnings("rawtypes") Iterator iterator = items.iterator(); System.out.println("Order Id: " + orderId); while(iterator.hasNext()) { JSONObject item = (JSONObject)iterator.next(); if(subOrders.isEmpty()) { subOrder.put("category", item.get("category")); gitems.add(item); subOrder.put("items", gitems); subOrders.add(subOrder); } else { Iterator subOrdersIterator = subOrders.iterator(); for(int i=0; i<subOrders.size(); i++) { JSONObject sitem = (JSONObject) subOrdersIterator.next(); if(sitem.get("category") == item.get("category")) { gitems.add(item); subOrder.put("items", gitems); subOrders.add(subOrder); } else { subOrder.put("category", item.get("category")); gitems.add(item); subOrder.put("items", gitems); subOrders.add(subOrder); } } } } } catch(Exception e) { e.printStackTrace(); } System.out.println(subOrders); } }

y también recibo un error en java.util.ConcurrentModificationException , pero esa no es mi pregunta principal, lo que realmente quería era una forma de dividirlos. Probé un par de cosas que no funcionaron.

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

0

No puede alterar una colección mientras la itera. Prueba esto:

 Object[] subOrderArray = subOrders.toArray(); for(Object o: subOrderArray) { JSONObject sitem = (JSONObject) o;
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