PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java / Kotlin JSON-Parser



lrg0
28.03.2018, 21:14
Hi,

ich stehe gerade etwas auf dem Schlauch....
Es geht darum JSON in Java / Kotlin zu verarbeiten. Dazu habe ich die Daten von https://blockchain.info/de/rawaddr/1AJbsFZ64EpEfS5UAjAfcUG8pH8Jn3rn1F in einem String geladen.
Mit Klaxon habe ich versucht die Daten zu parsen aber so einfach wie ich es mir vorgestellt habe klappt es nicht. Ich möchte über alle Transaktionen iterieren (forEach oder sowas).
Muss ich dazu eine Klasse schreiben, die das Json-Object abbildet oder gibt es die Möglichkeit, die Klasse automatisch aus den Daten zu erstellen?
Die Module Klaxon und Bitcoinj habe ich schon geladen aber leider komme ich damit noch nicht ans Ziel.
Ziel ist es die Transaktionen nach einer bestimmten Adresse zu durchsuchen und zu bestimmen in welcher Höhe Bitcoin empfangen wurde und ob lock_time gesetzt wurde.

Gibt es viellecht eine Art JSoup für JSON-Data? Wie mache ich es richtig?

Grüße

Jut4h.tm
30.03.2018, 15:44
Ich nutze immer https://github.com/google/gson Das ist ziemlich einfach.
Beispiel JSON parsen:



JsonElement jsonTree = jsonParser.parse(responseBody);
JsonObject eventBase = jsonTree.getAsJsonObject().get("alarm").getAsJsonObject();
long time = eventBase.get("encapsulated_entities").getAsJsonObject().get("event_type").getAsJsonObject().get("created_at").getAsLong();


Die Lib löst das ganz elegant du holst dir immer erst das Element und kannst dann angeben welchen Typ es hat.

Schleife:



ArrayList<String> roomSectors = new ArrayList<String>();
JsonArray rooms = eventBase.get("encapsulated_entities").getAsJsonObject().get("room_sectors").getAsJsonArray();

if(rooms.size() > 0)
{
for (int i = 0; i < rooms.size(); i++) {
roomSectors.add(rooms.get(i).getAsJsonObject().get ("name").getAsString());
}
}

sp1nny
05.04.2018, 23:47
Kannst auch jackson (https://github.com/FasterXML/jackson-databind) benutzen