Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

326
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!