Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

327
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda