JSON einlesen und benutzen

setelk

Mitglied
Morgen,

hab ein kleines Problem und habe mir schon etliche Tutorials angeguckt angeguckt, aber leider kommt nur bei mir der Fehler.

Ich möchte bestimmte Werte von der json einlesen und dann weiter verarbeiten.
Es soll quasi eine Art Wecker werden, jedoch kann man die Werte auch aus der json lesen statt neu zu schreiben.
Das lesen klappt einfach nicht. Hab glaube ein enormen Denkfehler.
Egal welches Tut ich mir angucke.
Danke im Voraus und schönen Start in die Woche

JSON:
Code:
[
    {
        "ankunftszeit": "8:00",
        "fahrtweg": "30.0",
        "zeitReady": "40.0"
        "zeitBus": "10.0"
        "mehrZeit": "10.0"
    }
]

Und hier der Code:
Code:
        } else if (option == 1) {
            JSONParser parser = new JSONParser();
            String fileName = "file.json";
            try {
                Object obj = parser.parse(new FileReader(fileName));
                JSONObject jsonObject = (JSONObject) obj;
                ankunftszeit = (String) jsonObject.get("ankunftszeit");
                System.out.println(ankunftszeit);
              
                fahrtweg = (float) jsonObject.get("fahrtweg");
                System.out.println(fahrtweg);

            }
            catch (FileNotFoundException e) { e.printStackTrace();}
            catch (IOException e) { e.printStackTrace();}
            catch (Exception e) { e.printStackTrace();}

        }
        in.close();
Und die Fehlermeldung:
Code:
java.lang.ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in unnamed module of loader 'app')
Fehler in Zeile 80 -> JSONObject jsonObject = (JSONObject) obj;
 

fhoffmann

Top Contributor
Dein JSON-Code beginnt mit eckigen Klammern und hat erst dann geschweifte Klammern.
Es enthält also ein Array von Objekten.
Du tust so, als enthielte es nur ein Objekt.
 

setelk

Mitglied
Dein JSON-Code beginnt mit eckigen Klammern und hat erst dann geschweifte Klammern.
Es enthält also ein Array von Objekten.
Du tust so, als enthielte es nur ein Objekt.
Wenn ich also die eckige Klammer weg mache, ist es nur ein Objekt?

Edit: Klammer wegemacht und jetzt lässt sich das auslesen.
Ist es aber auch praktikabel es ohne array zu machen=?
 

KonradN

Super-Moderator
Mitarbeiter
Woher kommt denn das JSON? Wenn das JSON eben genau so kommt, wie es angezeigt wurde, dann solltest Du es auch eben genau so einlesen.

Und wenn Du es manuell machst, dann ist halt das erste Objekt ein JSONArray dessen erstes Element Du dann nehmen kannst (Statt den Text des JSON irgendwie anzupassen).

Generell wäre es aber evtl. auch einfach ratsam, eine Library zu nutzen, die gleich das ganze Decoding macht. Dann hast Du eine Datenklasse und sagst dann nur noch, dass Du eine ArrayList von dieser Datenklasse eingelesen haben willst.
 

KonradN

Super-Moderator
Mitarbeiter
Wie das Einlesen eines solchen JSON aussehen kann mit GSON kannst Du hier erkennen:

Code:
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.List;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class WeckerJasonTests {

    public static class Wecker {
        private String ankunftszeit;
        private String fahrtweg;
        private String zeitReady;
        private String zeitBus;
        private String mehrZeit;
    }

    private static final String JSONText = "[\n" +
            "  {\n" +
            "    \"ankunftszeit\": \"8:00\",\n" +
            "    \"fahrtweg\": \"30.0\",\n" +
            "    \"zeitReady\": \"40.0\",\n" +
            "    \"zeitBus\": \"10.0\",\n" +
            "    \"mehrZeit\": \"10.0\"\n" +
            "  }\n" +
            "]";

    @Test
    public void testDecode() {
        Gson gson = new Gson();
        TypeToken<ArrayList<Wecker>> typeToken = new TypeToken<>(){};
        List<Wecker> importedData = gson.fromJson(JSONText, typeToken.getType());
        assertEquals(1, importedData.size());
    }
}

Das Einlesen sind nur die Zeilen 32-34, der Rest ist halt nur das Drumherum:
  • Die Klasse für die Daten
  • Das JSON als String (und auch verbessert, bei Dir fehlten Kommata!)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Objekte in JSON speichern?? Java Basics - Anfänger-Themen 1
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
I JSON - cannot deserialize from Object value Java Basics - Anfänger-Themen 16
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
BATMAN_2008 Jackson adding additional fields to JSON throws java.util.concurrent.CompletionException: Java Basics - Anfänger-Themen 2
I JSON und Interface Java Basics - Anfänger-Themen 3
J Wert in einer json Datei ändern und speichern Java Basics - Anfänger-Themen 3
J Json Datei auslesen Java Basics - Anfänger-Themen 4
J JSON-HashMap Java Basics - Anfänger-Themen 3
P JSON-Array auf Excel-Spalten verteilen? Java Basics - Anfänger-Themen 5
P Variablen HttpResponse.getBody() wird automatisch org.json Object und kann nicht zu json.simple Object gecastet werden? Java Basics - Anfänger-Themen 7
P Ressourcen für JSON & API Informationen? Java Basics - Anfänger-Themen 1
D JSON in JSOUP ELEMENTS Java Basics - Anfänger-Themen 1
M Wie analysiert JSON eine toString-Ausgabe ? Java Basics - Anfänger-Themen 1
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
R Value von einem JSON-Objekt ausgeben Java Basics - Anfänger-Themen 4
S JSON Datei schreiben und lesen Java Basics - Anfänger-Themen 3
F Kann JSON nicht deserialisieren Java Basics - Anfänger-Themen 0
R JSON Array Java Basics - Anfänger-Themen 4
E Erste Schritte Wie führe ich org.json.jar aus? Java Basics - Anfänger-Themen 6
M JSON Format Java Basics - Anfänger-Themen 5
I JSON Datei in Array umwandeln Java Basics - Anfänger-Themen 1
A JSON Lesen und Schreiben. Java Basics - Anfänger-Themen 3
L Jackson JSON parsen Java Basics - Anfänger-Themen 7
A JSON versenden Java Basics - Anfänger-Themen 2
N JSON - komme nicht weiter Java Basics - Anfänger-Themen 2
Y Fehler in Json Datei Java Basics - Anfänger-Themen 4
F JSON null macht mir ein Problem Java Basics - Anfänger-Themen 3
N Suchfeld, JSON Java Basics - Anfänger-Themen 2
F JSON in dokumentierten Format als PDF Java Basics - Anfänger-Themen 3
P JSON-Konfigurationsdatei verwenden: Probleme mit Pfad Java Basics - Anfänger-Themen 1
J JSON Java Basics - Anfänger-Themen 2
F JSON von XBMC Java Basics - Anfänger-Themen 1
Traxter JSON in Java Java Basics - Anfänger-Themen 15
J String aus Json File parsen Java Basics - Anfänger-Themen 6
B Best Practice JSON Datei zerlegen Java Basics - Anfänger-Themen 1
Joew0815 Interface JSON Objekte aus Java Objekten erzeugen Java Basics - Anfänger-Themen 9
C XML und/oder JSON Java Basics - Anfänger-Themen 3
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
L Input/Output JSON Objekt abrufen und ausgeben Java Basics - Anfänger-Themen 9
D JSON Java Basics - Anfänger-Themen 4
R JSON - Ausgabe als HTML mit gson Java Basics - Anfänger-Themen 6
F JSON to JAVA (und vice versa) Java Basics - Anfänger-Themen 2
M JSON Datensätze aus Website in Tabelle Java Basics - Anfänger-Themen 17
C Java, Javascript, Dojox und JSON Java Basics - Anfänger-Themen 4
S JSON String in Object umwandeln Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
G JTree speichern und wieder einlesen Java Basics - Anfänger-Themen 5
T Text einlesen code was kommt dahin? Java Basics - Anfänger-Themen 1
S SeriellenPort einlesen Java Basics - Anfänger-Themen 3
I XML einlesen und Objekte bekommen Java Basics - Anfänger-Themen 2
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
julian0507 Wörter einlesen lassen und rückwärts ausgeben Java Basics - Anfänger-Themen 7
A CSv.Datei einlesen und die werte in zweidemosional Int Array speichern Java Basics - Anfänger-Themen 9
I Ical4j / Kalender einlesen von URL - Fehler: "Unparseable date" Java Basics - Anfänger-Themen 16
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
sserio Txt Datei einlesen Java Basics - Anfänger-Themen 9
D Strings aus Excel-Datei einlesen Java Basics - Anfänger-Themen 2
julian112 Input/Output .gz bzw. .txt Datei Einlesen und Umgang mit Exceptions Java Basics - Anfänger-Themen 1
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Einlesen > new Leser Java Basics - Anfänger-Themen 5
W Werte durch Konsole einlesen Java Basics - Anfänger-Themen 10
A Array einlesen und ausgeben Java Basics - Anfänger-Themen 13
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
K Datum einlesen und Tag, Monat und Jahr einzeln ausgeben Java Basics - Anfänger-Themen 1
KogoroMori21 Textdatei einlesen im Array (Selection Sort Algorithmus) Java Basics - Anfänger-Themen 3
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java String einlesen und auslesen Java Basics - Anfänger-Themen 11
A Input/Output Mehrere Csv-Dateien einlesen Java Basics - Anfänger-Themen 2
S CSV einlesen und mit Komma trennen Java Basics - Anfänger-Themen 12
CptK Richtigen Pfad beim einlesen von Datei finden Java Basics - Anfänger-Themen 2
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
J Csv-Datei einlesen Java Basics - Anfänger-Themen 52
JD_1998 Arrays einlesen, zwischenspeichern und wieder ausgeben Java Basics - Anfänger-Themen 8
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
L Datein einlesen Java Basics - Anfänger-Themen 1
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
E Input/Output Datei anhand von Dateinamen einlesen Java Basics - Anfänger-Themen 5
C Datei über relative Pfade einlesen Java Basics - Anfänger-Themen 6
A Input/Output Dateien einlesen und ausgeben Java Basics - Anfänger-Themen 7
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A 2d Arrays aus txt.file einlesen Java Basics - Anfänger-Themen 16
A Textdatei mit stream einlesen Java Basics - Anfänger-Themen 2
P Datei einlesen und zurückgeben Java Basics - Anfänger-Themen 5
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
E TXT FILE EINLESEN Java Basics - Anfänger-Themen 4
M Einzelzeichen einlesen Java Basics - Anfänger-Themen 2
C (char) Array einlesen Java Basics - Anfänger-Themen 8
B HTML File einlesen inkl. Bilder? Java Basics - Anfänger-Themen 2
E Mehrere Eingabezeilen gleichzeitig einlesen Java Basics - Anfänger-Themen 7
B HTML Datei einlesen und HTML Code in String wandeln Java Basics - Anfänger-Themen 19
V Schleife für das Einlesen von Werten für int Variablen, die Bestandteil von Arrays sein sollen Java Basics - Anfänger-Themen 16
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben