String mit mehreren Attributen aufteilen

Diskutiere String mit mehreren Attributen aufteilen im Java Basics - Anfänger-Themen Bereich.
G

Gandaaaalf

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
 
O

Oneixee5

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:
Ullenboom

Ullenboom

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.
 
O

Oneixee5

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.
 
Thema: 

String mit mehreren Attributen aufteilen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben