Open DesiS96 opened 4 years ago
Meine Vorlage aus dem Seminar sollte eigentlich passen. Lass uns schauen, dass Du daraus schlau wirst. Wo klemmt's dabei gerade? Bis Donnerstag bin ich gerade aber auf einem Lehrgang und daher nur sehr sporadisch erreichbar. Deswegen hoffe ich, dass deine Kommilitonen mithelfen.
Ich habe mal eine test.json bestehend aus strings geschrieben und ein Interface für den Typ Data welcher ja später aus der Methode erhalten wird. Wenn ich dann aber die Methode mithilfe des filenames also test.json ausführe und die geladenen Dateien probeweise versuche auszugeben bekomme ich nur Fehler in der Konsole angezeigt: Fetch API cannot load. URL scheme must be "http" or "https" for CORS request. Will das eine URL? Aber die load Methode bezieht sich doch auf lokale jsons oder?
Mir wurde geantwortet und ich weiß jetzt wo der Fehler lag. Ich denke ich komme jetzt doch erstmal wieder klar :)
Ich hätte doch noch eine Frage. Und zwar kann ich die geladenen Elemente nicht nutzen. Wenn ich z.b den Raum-Array lade und irgendwo z.b die Länge des Arrays verwenden möchte sagt mir das Programm, dass das mit Promise<Room[]> nicht geht. Ich verstehe nicht wie ich dieses Promise in eine richtiges Objekt umwandle.
Wie im Seminar geübt musst Du die Seite über einen lokalen Server laden, z.B. über "npx serve" oder das LiveServer-Plugin für VSCode.
Wenn Du etwas lädst, kriegst Du zunächst einen Text, der dann in ein JSON-Objekt umgewandelt werden kann. Diesem solltest Du dann die Daten und auch die Länge von Arrays entnehmen können.
Achso ich hatte angenommen, dass die Methode das Umwandeln in ein JSON-Objekt bereits übernimmt. Danke für die Antwort.
Es kommt darauf an, welche Methode Du verwendest. Wenn Du einen Link auf deinen Code postest, könnte ich mir das ansehen.
Das ist der momentane Stand
Aus der Lade-Funktion gibst Du das JSON-Objekt als Objekt vom Typ Data
zurück. Daher würde ich erwarten, dass auch folgendes akzeptiert werden müsste:
let roomA: Data = loadRooms("./rooms.json");
spätestens, wenn Du await
for loadRooms schreibst.
Allerding frage ich mich auf einer höheren Ebene, ob ein string|number-Array tatsächlich der richtige Typ sein soll mit dem Du deine Strukturen beschreibst...?
Das hatte ich anfangs mal probiert aber dann streicht es mir die Variable an und meint, dass property data in Promise deswegen nicht akzeptiert. Ich hatte auch mal versucht einen Raum zu übergeben und da kam die gleiche Meldung. Ich habe jetzt auch mal einen RoomData Typen definiert der alle Properties beinhaltet die auch die Room-Klasse hat und welche in der Json stehen. Die Load-Funktion gibt jetzt einen RoomData-Array aus, allerdings ist da die Rückmeldung wenn ich versuche den output der Funktion einer RoomData[] Variable zu übergeben, dass Promise<RoomData[]> properties wie length nicht besitzt.
Wollen wir kurz online gehen?
Ja
dm16
Hallo Jirka, ich versuche seit gestern meine JSON Dateien in mein Programm einzubringen. Habe schon viele Vorschläge von Kommilitonen bekommen aber keine der Varianten hat funktioniert. Sei es mit import (da hatte der javascript-Teil irgendwelche Referenzprobleme) mithilfe eigens geschriebener import-files(gleiches Problem). Ich habe mir auch die loadJSON aus der Vorlesung nochmal angesehen werde aus der aber auch nicht ganz schlau. Hättest du noch irgendeinen Tipp wie man das noch angehen könnte? Danke im Voraus