String mit mehreren Attributen aufteilen

Gandaaaalf

Mitglied
Hey,

weiß einer wie man einen String mit mehreren Attributen in mehrere Strings (jeder String 1 Attribut) aufteilt?

Bsp: ich bekomme durch eine json abfrage diesen String: {"Bestellnummer":"1","Besteller":"8195529","Zeit":"2019-09-27 15:50:07","Artikel":[{"Artikelnummer":"76194","Anzahl":"1","Preis":"2.968"},{"Artikelnummer":"61681","Anzahl":"1","Preis":"7.147"},{"Artikelnummer":"111756","Anzahl":"1","Preis":"9.29"},{"Artikelnummer":"14227","Anzahl":"1","Preis":"0"}]}

Wie kann ich diesen in Bestellnummer, Besteller, Artikel, Artikelnummer, Anzahl und Preis aufteilen?
Ich habe überlegt substring zu benutzen aber es gibt insgesamt 147500 Bestellungen, weswegen ich mit irgendeiner Art von Schleife dass machen will/muss. (-> substring kann man nicht benutzen da die Bestellnummer hochgezählt wird und der Preis nicht die selbe länge immer hat.)

Danke im voraus für die Hilfe
 
Das beste Vorgehen wäre, du erstellst Java-Klassen, die deinem JSON-Format entsprechen und arbeitest damit weiter:

Java:
private class Person {
    public String name;
    public Person(String name) {
        this.name = name;
    }
}

Google GSON (Maven)
Java:
Gson g = new Gson();
Person person = g.fromJson("{\"name\": \"John\"}", Person.class);
System.out.println(person.name); //John
System.out.println(g.toJson(person)); // {"name":"John"}
oder:
Java:
JsonObject jsonObject = new JsonParser().parse("{\"name\": \"John\"}").getAsJsonObject();
System.out.println(jsonObject.get("name").getAsString()); //John

Org.JSON (Maven)
Java:
JSONObject obj = new JSONObject("{\"name\": \"John\"}");
System.out.println(obj.getString("name")); //John

Jackson (Maven)
Java:
ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue("{\"name\": \"John\"}", Person.class);
System.out.println(user.name); //John
 
Zuletzt bearbeitet von einem Moderator:
Variante (1) wäre wie schon vorgeschlagen aus dem JSON die Java-Klassen abzuleiten, auch automatisch, etwa mit http://www.jsonschema2pojo.org/. Das Problem könnte aber die Laufzeit und Speicherverbrauch sein. 150.000 Objekte tuen der JVM nicht weh, aber wenn ich so ein Szenario sehe, denke ich an eine Streaming-Verarbeitung -- Variante (2) -- so wie STaX für XML. Das gibt es auch für JSON, https://www.baeldung.com/jackson-streaming-api bringt ein Beispiel.
 
Sorry, so hatte ich das nicht aufgefasst, dass alle 150000 Bestellungen auf einmal verarbeitet werden sollen. In diesem Fall ist eine Streaming-API natürlich die bessere Wahl.
 

Zurück
Oben