• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

gson mit einer Hashmap

F

Fohnbit

Top Contributor
Hallo,

Ich speichere eine Instanz einer Klasse in ein json file und lade dieses bei erneuten Start wieder.

Aber ich erhalte immer den Fehler:
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 3 column 6 path $.loadingBays.

Der Anfang der json Datei:
JSON:
{
  "loadingBays": {
    "2021-02-24": {
      "bay": [
        {
          "finishedTransportOrders": [],
          "waitingTransportOrders": [
              .......

Ich denk es die HashMap .. Anleitungen habe ich nur gefunden, wenn ich diese direkt serialisieren würde.

Aufruf des ladens:
        LocalDate date = LocalDate.now();
        String path = "loadingSlots" + "[" + date.getMonthValue() + "-" + date.getYear() + "]";
        loadingSlotMain = (LoadingSlotMain) readJson(loadingSlotMain, path);

Json laden:
    private Object readJson(Object o, String name) {
        File file = new File(SYSTEMPATH + "\\" + name + ".json");
        Reader reader = null;
        Object obj = null;
        try {
            if (file.exists()) {
                reader = new FileReader(file);
                if (name.startsWith("loadingSlots")) {
//                    Type typeOfHashMap = new TypeToken<HashMap<LocalDate, LoadingSlots>>() {
//                    }.getType();
                    obj = gson.fromJson(reader, o.getClass());
                } else {
                    obj = gson.fromJson(reader, o.getClass());
                }
                reader.close();
            } else {
                logger.error(name + " not found");
            }
        } catch (FileNotFoundException e) {
            try {
                reader.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            e.printStackTrace();
            logger.error("Error " + e.getMessage() + " in 'readJson'");
        } catch (IOException e) {
            e.printStackTrace();
        }
        return obj;
Der Fehler kommt bei Zeile 11: obj = gson.fromJson(reader, o.getClass());

class LoadingSlotMain:
public class LoadingSlotMain {

    private transient Logger logger = (Logger) LoggerFactory.getLogger(this.getClass());
    public static final long NEXT_TRUCK_DELAY = 30000; // ms
    private static int MAX_SLOTS;
    private static int PAGER_AMOUNT;
    public transient Date[] lastTruckRequestBay;
    
    public HashMap<LocalDate, LoadingSlots> loadingBays = new HashMap<LocalDate, LoadingSlots>();
        
    public transient Pagers pagers = new Pagers(PAGER_AMOUNT);
    
    ...
 
mrBrown

mrBrown

Super-Moderator
Mitarbeiter
GSON hat keinen Support für LocalDate, daher kann es nicht deserialisiert werden. Du müsstest selber einen JsonDeserializer<LocalDate> implementieren (und am besten auch einen Serializer), dann klappt es.
 
F

Fohnbit

Top Contributor
Guten Morgen mrBrown,

ahh, JsonDeserializer<LocalDate> hatte ich vergessen.
hatte nur JsonSerializer<LocalDate>:
Java:
private Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX").enableComplexMapKeySerialization()
            .registerTypeAdapter(LocalDate.class, new LocalDateAdapter()).setPrettyPrinting().create();

class LocalDateAdapter implements JsonDeserializer<LocalDate>, JsonSerializer<LocalDate> {

    public JsonElement serialize(LocalDate date, Type typeOfSrc, JsonSerializationContext context) {
        return new JsonPrimitive(date.format(DateTimeFormatter.ISO_LOCAL_DATE));
    }

    @Override
    public LocalDate deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext)
            throws JsonParseException {
        return LocalDate.parse(json.getAsJsonPrimitive().getAsString());
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F GSON file mit einer List erstellen Java Basics - Anfänger-Themen 2
P Gson ignore @SerializedName Java Basics - Anfänger-Themen 7
H GSON-Bibliothek für eigene Programme benutzen Java Basics - Anfänger-Themen 2
F GSON Java Basics - Anfänger-Themen 2
F GSON mit @ Java Basics - Anfänger-Themen 0
I Gson auslesen Java Basics - Anfänger-Themen 10
R JSON - Ausgabe als HTML mit gson Java Basics - Anfänger-Themen 6
StupidAttack Gson, welche Datenstruktur? Java Basics - Anfänger-Themen 4
E Längstes Element einer ArrayList ausgeben Java Basics - Anfänger-Themen 9
J Autovervollständigung in einer Tabelle Java Basics - Anfänger-Themen 40
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
D Methoden nach einer bestimmten Reihenfolge ausführen. Java Basics - Anfänger-Themen 20
M Wie kann ich Werte die in einer While Schleife sind weiter genutzt werden? Java Basics - Anfänger-Themen 7
T Inhalt aus TextField in Attribut einer Instanz schreiben Java Basics - Anfänger-Themen 5
T getAttribut in einer Methode aufrufen Java Basics - Anfänger-Themen 8
BorussiaMG1900 Implementation einer Methode Java Basics - Anfänger-Themen 1
H Klassen Die Länge einer Text-Node bestimmen Java Basics - Anfänger-Themen 2
O 2D-Array nach einer Spalte sortieren Java Basics - Anfänger-Themen 22
P Wie rufe ich Methoden mit einer Referenz auf eine Klasse||Objekt auf Java Basics - Anfänger-Themen 4
Bademeister007 Operatoren Alle Zahlen einer ArrayList die durch 5 teilbar ist Java Basics - Anfänger-Themen 2
J Problem mit einer Methode die gewissen Inhalt einer Array löschen soll Java Basics - Anfänger-Themen 9
J Problem mit einer Methode, die beliebig viele Objekte in Array speichern soll Java Basics - Anfänger-Themen 6
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
Abraham42 Prozentsatz einer Zahl mehrmals Java Basics - Anfänger-Themen 2
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
RudiRüssel maximale Anzahl von Schlüsseln in einer Hash Tabelle Java Basics - Anfänger-Themen 2
U Problem mit dem initialisieren meines Strings in einer Schleife Java Basics - Anfänger-Themen 5
C Sortieren einer ArrayList Java Basics - Anfänger-Themen 2
Khaled-Abo Ziffern unterscheiden mittels einer For-Schleife Java Basics - Anfänger-Themen 6
Y Wie kann ich ein Element in einer toString finden. Java Basics - Anfänger-Themen 2
Y Knoten an einem gegebenen Index aus einer Liste entfernen. Java Basics - Anfänger-Themen 6
jonathanpizza Hilfe bei einer Übungsaufgabe Java Basics - Anfänger-Themen 3
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
crrnogorka Letzte Zeile einer Tabelle "überschreibt" alle anderen Zeilen Java Basics - Anfänger-Themen 1
jonathanpizza Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
C Meldung einer Klasse nach "oben" Java Basics - Anfänger-Themen 6
NeoLexx Datenströme Lesen und Schreiben einer Textdatei Java Basics - Anfänger-Themen 2
A Methode in einer anderen Klasse verwenden Java Basics - Anfänger-Themen 1
U Compiler-Fehler Programmierung einer Drehkugel Java Basics - Anfänger-Themen 8
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
JD_1998 Random Array sortieren mit Hilfe einer Methode Java Basics - Anfänger-Themen 4
jonny_2k12 Wie kann ich eine ArrayList aus einer Klasse in eine andere übergeben? Java Basics - Anfänger-Themen 21
L Datentypen Deklarierte Felder einer Generic Klasse bestimmen Java Basics - Anfänger-Themen 7
O Namen (mit Umlauten und ß) in einer ArrayList suchen Java Basics - Anfänger-Themen 5
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
itsmejo Erste Schritte Auf Attribut einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 14
DorFey Schrittweises abändern des GUI während for-Schleife / pausieren einer for-Schleife Java Basics - Anfänger-Themen 3
R Implementieren einer iterativen und rekursiven Klassenmethode. Java Basics - Anfänger-Themen 1
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
K Übergabe von Werten (zweidimensionales Array) aus einer Methode an zweidimensionales Array in main() Java Basics - Anfänger-Themen 3
J Übergeben einer Objektreferenz Java Basics - Anfänger-Themen 6
M this.object in einer parameterlosen Methode verwenden Java Basics - Anfänger-Themen 3
M Warum dürfen Objekte einer Klasse auf statische Variablen dieser Klasse referenzieren? Java Basics - Anfänger-Themen 10
A Fehler beim Ausführen einer class Datei Java Basics - Anfänger-Themen 6
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
P Problem beim Überschreiben einer vererbten Methode Java Basics - Anfänger-Themen 4
P Veränderungen einer ObservableList Java Basics - Anfänger-Themen 10
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
O BiPredicate in einer forEach Methode Java Basics - Anfänger-Themen 10
N Typebound Objekte einer Arraylist hinzufügen Java Basics - Anfänger-Themen 7
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
M Letztes Element einer ArrayList Java Basics - Anfänger-Themen 12
L Wie greife ich in der Subklasse auf die Parameter einer Methode der Superklasse zu ? Java Basics - Anfänger-Themen 15
ms_cikar Den Wert einer Hex. value bestimmten. Java Basics - Anfänger-Themen 8
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 21
E Rückwärtsmultiplikation einer invertierten matrix Java Basics - Anfänger-Themen 2
U Objekte in einer LinkedList sortieren Java Basics - Anfänger-Themen 5
S Erzeugen einer eindeutigen ID Java Basics - Anfänger-Themen 2
N Methode um Objekte einer Liste hinzuzufügen Java Basics - Anfänger-Themen 1
B Objektverwaltung mit ArrayList in einer seperaten Klasse Java Basics - Anfänger-Themen 24
G Problem bei der Ausgabe einer Main Claase Java Basics - Anfänger-Themen 7
I ArrayList erstellen innerhalb einer Zeile? Java Basics - Anfänger-Themen 3
L Variable von einer Methode zu einer anderen Methode inkl. einer "Zwischenmethode" Java Basics - Anfänger-Themen 1
B Hilfe bei einer rekursiven Methode Java Basics - Anfänger-Themen 3
KogoroMori21 Mit einer Schleife eine Treppe zeichnen Java Basics - Anfänger-Themen 29
S Auf Methode einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 3
B Summe von Property innerhalb einer Liste via Lambda Java Basics - Anfänger-Themen 1
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
V_Fynn03 Beliebiges Element in einer Liste löschen (Java)(Lineare Datenstrukturen) Java Basics - Anfänger-Themen 9
S Variablen Variablen in einer Schleife erstellen lassen Java Basics - Anfänger-Themen 11
A Java . punkt neben einer Zahl. Java Basics - Anfänger-Themen 1
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
S Mit einer LinkedList vorwärts und rückwärts iterieren Java Basics - Anfänger-Themen 6
M Implementieren einer Datenstruktur, welche nur 5 Objekte speichert Java Basics - Anfänger-Themen 3
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
S Endlosschleife beim Ausgeben einer LinkedList Java Basics - Anfänger-Themen 2
M Getter einer PriorityQueue Java Basics - Anfänger-Themen 1
M Zugriff auf eine ArrayList in einer anderen Klasse Java Basics - Anfänger-Themen 4
M Implementierung einer getNextId Methode Java Basics - Anfänger-Themen 5
C Verschiedene Objekte in einer Liste speichern Java Basics - Anfänger-Themen 6
M Untersuchen ob ein Graph nach entfernen einer Kante immer noch zusammenhängend ist Java Basics - Anfänger-Themen 70
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
N Erstellung einer Supermarktwarteschlange Java Basics - Anfänger-Themen 10
R Signatur einer Methode in JAVA Java Basics - Anfänger-Themen 4
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
S Datenbank Tabelle eine Zeile an einer bestimmten Stelle einfügen Java Basics - Anfänger-Themen 2
S Verbindung von einer Excel Datei zu Java-- Java Basics - Anfänger-Themen 4
T Ausgabe einer for Schleife Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben