JSONObject auslesen und in HashMap hinterlegen

XHann3sX

Aktives Mitglied
Hi,

ich habe eine Frage zum Thema JSON undzwar wollte ich einen JSON-String der u.a 2 Arrays enthält die eine unbekannte Anzahl an Objekten beinhaltet und diese möchte ich auslesen und die Werte der Objekte in einer HashMap speichern das JSON-Array sieht in etwa so aus
Code:
   "array":[ 
      { 
         "id":"12000",
         "price":68
      },
      { 
         "id":"12400",
         "price":19
      }
   ]

Und hier möchte ich die Werte herauslesen mit unter Nutzung dieser Libary code.google.com/archive/p/json-simple/
Weil ich dachte das das damit einfach geht , wegen simple, geht es aber nicht. Ich erhalte Excpetions , wenn ich die Einträge des Arrays als JSONObject parsen will etc, kennt jemand eine Alternative Möglichkeit habe schon einige bei Stackoverflow gesehen , die machen aber nicht wirklich das was ich vorhatte

MFG
Hannes
 

mrBrown

Super-Moderator
Mitarbeiter
Wie willst du denn die Werte in einer Map unterbringen, id als Key und price als Value?
Wenn ja, wirst du da selber was basteln müssen, irgendeine Lib wird nicht das Schema in deinen Daten sehen und id als Schlüssel für die anderen Daten erkennen
 

XHann3sX

Aktives Mitglied
Nein jeden Eintrag einzelnd , das Array selbst ist in echt größer
Ehrlich wie
KEY "id" VALUE 12000
KEY "price" VALUE 68
Value sollte dann ein Objekt sein und wird dann nachher richtig geparst
 

mrBrown

Super-Moderator
Mitarbeiter
Das geht damit schon, wird aber zur Cast-Hölle..."simple" heißt nicht unbedingt, dass es schön zu benutzen ist ;)

Java:
((Map) ((JSONArray) ((JSONObject) new JSONParser().parse(json)).get("array")).get(0)).get("id")


Hast du dir mal GSON angeguckt?
 

XHann3sX

Aktives Mitglied
Ja aber nie ganz verstanden, wie ich das anstellen soll, habe deswegen auf simple gewechselt, aber ich werde es mir Mal genauer anschauen Danke !
 

mrBrown

Super-Moderator
Mitarbeiter
Einfach gesagt: du baust dein Json-Struktur mit Java-Klassen nach.
In deinem Beispiel kann das zB ein Map[] sein, und das lässt sich dann parsen mit:
Java:
String json = "[ \n" +
        "      { \n" +
        "         \"id\":\"12000\",\n" +
        "         \"price\":68\n" +
        "      },\n" +
        "      { \n" +
        "         \"id\":\"12400\",\n" +
        "         \"price\":19\n" +
        "      }\n" +
        "   ]";

Gson gson = new Gson();
Map<String,String>[] array = gson.fromJson(json, Map[].class);

Map halte ich hier aber für ungeeignet, besser passen da direkt passende Objekte
 

XHann3sX

Aktives Mitglied
Naja , die Objekte können aber sehr umfangreich sein und es gibt schon extra eine Methode , die das Objekt aus dieser HashMap erstellt , da nicht immer alle Value enthalten sind
 

mrBrown

Super-Moderator
Mitarbeiter
Die Objekte brauchst du doch so oder so?
Und ob alle Werte enthalten sind, ist bei GSON egal. Man spart sich halt das selber Parsen/erstellen der Objekte ;)
 

XHann3sX

Aktives Mitglied
Hä? Wenn ich eine Mal mit den Keys und den Werte habe ,kann ich durch das aufrufen einer Methode daraus das gesamt Objekt erstellen, ohne das ich da irgendwas machen muss, das ist für mich die kürzeste Methode, aber ich werde es Mal so Versuche ;) Danke !
 

mrBrown

Super-Moderator
Mitarbeiter
Wie erstellst du denn mit einem Methodenaufruf aus einer Map ein Objekt? o_O
Das ist entweder ein Haufen if/switch oder viel Reflection, aber nichts simples...
 

XHann3sX

Aktives Mitglied
Naja , ist ne API wie genau, weiß ich nicht , er fasst die Meta-Daten wohl irgendwie zusammen . Naja aber auch egal, die Methode funktioniert, etwas eigenes zu erstellen ist nicht nötig :D

Edit Bei deinem Code-Snippet wird da die gesamte Json in eine HashMap geschrieben ? Weil ich müsste jeden Eintrag durchiterieren und für jeden eine eigene HashMap erstellen
 

RalleYTN

Bekanntes Mitglied
Ich arbeite selber mit json-simple.
Du hast ein Array was geparst werden soll und möchtest es als Map darstellen.
Das id Attribut der einzelnen Elemente soll als Key und das price Attribut als Value interpretiert werden.
Ist eigentlich recht simpel.

Java:
Map<String, Integer> map = new HashMap();
((JSONArray)new JSONParser().parse(/* Quelle des JSON */)).forEach(element -> {

    JSONObject object = (JSONObject)element;
    map.put((String)object.get("id"), ((Number)object.get("price")).intValue()); // Zahlenwerte immer erst in Number casten weil die API sonst Probleme macht.
});

Gerne nochmal in langer Form um die Schritte besser nachvollziehen zu können.
Java:
Map<String, Integer> map = new HashMap<>();
JSONParser parser = new JSONParser();
JSONArray array = (JSONArray)parser.parse(/* Quelle des JSON */);

for(Object element : array) {

    JSONObject object = (JSONObject)element;
    String id = (String)object.get("id");
    int price = ((Number)object.get("price")).intValue();
    map.put(id, price);
}
 
Zuletzt bearbeitet:

XHann3sX

Aktives Mitglied
Danke für eure Antworten, meine Email-Benachrichtigungen haben irgendwie nicht funktioniert, naja da sich ein Problem mit dem deserialisieren einige Objekete ergen hat, bin ich auf Base64 encoding umgestiegen und encodiere damit jetzt das gesamte Objekt Trotzdem danke für euere Antworten
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Neues Objekt aus List<JsonObject> mit Stream Allgemeine Java-Themen 4
JavaWolf165 JsonObject in HashMap umwandeln Allgemeine Java-Themen 16
J JSONObject Reihenfolge der Werte? Allgemeine Java-Themen 4
L Input/Output Email mit großer Pdf Anhang auslesen? Allgemeine Java-Themen 5
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
K Bildschirm auslesen/ Text erkennen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
S .exe Datei/Programm auslesen? Allgemeine Java-Themen 2
T INI - Einträge auslesen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
O PDF auslesen und verändern, was ist besser iText oder PDFBox ? Allgemeine Java-Themen 9
Robertop Status von Caps- und NumLock auslesen Allgemeine Java-Themen 1
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
G Mac Package auslesen Allgemeine Java-Themen 17
W Versionsnummer auslesen - Regex ist zickig Allgemeine Java-Themen 2
F Junit Test + Cucumber - JSON auslesen und in einem weiteren Schritt nutzen Allgemeine Java-Themen 0
M verschiedene Dokumente auslesen Allgemeine Java-Themen 1
Gaudimagspam CSV-Datei auslesen in Java Allgemeine Java-Themen 7
L Dateien richtig auslesen Allgemeine Java-Themen 6
F WireGuard Status auslesen Allgemeine Java-Themen 3
B .txt Datei erstellen und auslesen bzw. schreiben Allgemeine Java-Themen 6
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
N Txt Datei auslesen. Allgemeine Java-Themen 5
O xlsx Datei auslesen mit POI Apache liest keine LEERZELLEN Allgemeine Java-Themen 6
O xlsx Datei auslesen mit POI von Apache wirft seltsamen Fehler. Allgemeine Java-Themen 11
J Information von getSource() Objekt auslesen Allgemeine Java-Themen 1
V EMail, Attachments auslesen von einer Email Allgemeine Java-Themen 0
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
E CSV mit Text und Binärdaten auslesen Allgemeine Java-Themen 7
x46 Webseite in Java auslesen Allgemeine Java-Themen 2
M Html Seite auslesen Allgemeine Java-Themen 16
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
B Cookie auslesen Allgemeine Java-Themen 3
B Input/Output Programm zum Auslesen/Beschreiben von Textdateien, wie Geschwindigkeit erhöhen? Allgemeine Java-Themen 18
J Variablen Mehrere int-variablen in txt abspeichern und danach wieder auslesen Allgemeine Java-Themen 1
J Daten aus Website-Quelltext auslesen Allgemeine Java-Themen 62
J Teil einer URL auslesen Allgemeine Java-Themen 13
denny86 NetBeans Ordnernamen rekursiv auslesen und in Variable verarbeiten Allgemeine Java-Themen 38
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
C Position von Pixeln in Bilder auslesen Allgemeine Java-Themen 2
M aktive WLAN Teilnehmer auslesen? Allgemeine Java-Themen 6
S Kann man mit Java auf einem lokalen PC/Mac Benutzergruppen auslesen und Rechte ändern? Allgemeine Java-Themen 11
C Webseite auslesen Allgemeine Java-Themen 3
D Best Practice Gesamten Bildschirminhalt auslesen und Email schicken sobald kein Pixel sich ändert Allgemeine Java-Themen 11
A Erste Schritte Daten aus einer Website auslesen Allgemeine Java-Themen 7
J Bestimmte Zeile aus Textdatei auslesen Allgemeine Java-Themen 18
G Aus JTextField Zahlen auslesen und random generieren Allgemeine Java-Themen 10
M Tastatureingabe von Sondertasten auslesen Allgemeine Java-Themen 6
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M xlsx File auslesen Exception occured Allgemeine Java-Themen 13
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
J Auslesen Daten Java/HTML Allgemeine Java-Themen 15
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
KeVoZ_ Bestimmte Zeile aus Console finden & auslesen Allgemeine Java-Themen 2
T Url aus txt Datei auslesen und öffnen? Allgemeine Java-Themen 4
N Werte aus Hashmap auslesen und übertragen Allgemeine Java-Themen 8
KeVoZ_ Properties mit String auslesen Allgemeine Java-Themen 11
I HTML einer Website auslesen liefert nur head Allgemeine Java-Themen 6
D Aktuell installierte Java Version auslesen unter Windows Allgemeine Java-Themen 5
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
M Input/Output USB Geräteinstanzkennung auslesen Allgemeine Java-Themen 3
W 2D-Grafik Erstellungsdatum JPG direkt aus Header (EXIF) auslesen. Allgemeine Java-Themen 5
M Daten aus anderen Programmen auslesen Allgemeine Java-Themen 2
T Datei Byteweise auslesen Allgemeine Java-Themen 1
T Datentypen MNIST Datenbank auslesen (.gz) Allgemeine Java-Themen 0
T Ini Datei auslesen Allgemeine Java-Themen 3
J Temperatur aus bytes auslesen. Allgemeine Java-Themen 13
I JSoup Class auslesen Allgemeine Java-Themen 1
Bluedaishi Textdateien auslesen Allgemeine Java-Themen 12
T ELM327 OBD2 auslesen Allgemeine Java-Themen 0
D Double aus String auslesen Allgemeine Java-Themen 8
Z Zahlen aus Bild auslesen Allgemeine Java-Themen 1
A interaktives PDF auslesen/auswerten? Allgemeine Java-Themen 0
G Daten aus Website auslesen Allgemeine Java-Themen 7
S CSV Eintrag der nächsten Zeile auslesen funktioniert nicht Allgemeine Java-Themen 8
I Java FX JsonObjekt Children auslesen Allgemeine Java-Themen 23
M RXTX Details auslesen Allgemeine Java-Themen 6
N Input/Output Website Text auslesen und bestimmte Zeilen wiedergeben Allgemeine Java-Themen 4
X HTTP Auslesen der Ergebnisse von einer Webseite und in eine Liste packen Allgemeine Java-Themen 1
J Wav-Datei aus .jar auslesen Allgemeine Java-Themen 7
J Daten aus GUI auslesen und in Objekte umwandeln Allgemeine Java-Themen 6
D CSV Datei auslesen Allgemeine Java-Themen 23
N Werte aus Arrays auslesen funktioniert nicht Allgemeine Java-Themen 5
J Java JSON-Datei aus .Zip auslesen und Download mit Progress Bar Allgemeine Java-Themen 20
V Tooltips mit Java auslesen Allgemeine Java-Themen 1
I Inhalt einer Website auslesen Allgemeine Java-Themen 6
A JTable - CellRange auslesen Allgemeine Java-Themen 2
V 2d-Barcodes mit zxing auslesen Allgemeine Java-Themen 2
A Auslesen einer Datei sowie ausgeben als Liste in App Allgemeine Java-Themen 5
K Website in Programm einbinden und auslesen Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
S Zahlen aus (String mit zahlen) immer wieder neu auslesen Allgemeine Java-Themen 5
T datei auslesen ind der richtigen reihenfolge Allgemeine Java-Themen 2
A Probleme beim auslesen von Quelltext (HTML) Allgemeine Java-Themen 5
I Methoden Quellcode auslesen (Refelction o.ä.) Allgemeine Java-Themen 5
B Compiler-Fehler NullPointerException beim Auslesen von .lang-Datei Allgemeine Java-Themen 3
A Metadaten von Bildern auslesen und verändern Allgemeine Java-Themen 5
M InputStream auslesen Allgemeine Java-Themen 1
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben