Vom Text zu Objekten und zurück
Für ein Skript ist JSON nur Text. Bevor es mit den Daten arbeiten kann, muss es den Text in Arrays und Objekte umwandeln. Das macht JSON.parse():
const text = `{ "name": "Kiel", "temperatur": 5 }`;
console.log(text.temperatur);
const stadt = JSON.parse(text);
console.log(stadt.temperatur + 1);undefined
6Der Text steht in Backticks, damit er doppelte Anführungszeichen enthalten kann. Solange es Text ist, hat er keine Eigenschaft temperatur, also ist text.temperatur gleich undefined. JSON.parse() liest den Text und gibt ein echtes Objekt zurück, dessen Eigenschaften du lesen und ändern kannst. Wenn der Text kein gültiges JSON ist, endet es mit einem SyntaxError.
JSON.stringify() macht das Gegenteil: Es wandelt ein Array oder ein Objekt in JSON-Text um.
const stadt = { name: "Köln", temperatur: 21 };
console.log(JSON.stringify(stadt));{"name":"Köln","temperatur":21}Das Ergebnis hat alle Schlüssel in doppelten Anführungszeichen, wie JSON es verlangt, und keine Leerzeichen. Wozu brauchst du das? Daten können nur als Text reisen und gespeichert werden. Wenn eine Seite Daten an einen Server schickt oder im Browser speichert (das machst du später in dieser Lektion), wandelt sie sie zuerst mit JSON.stringify() in Text um. Wenn sie den Text zurückbekommt, macht JSON.parse() wieder Arrays und Objekte daraus.
So schreibst du es:
Anweisungen
- 1
Wandle
vorhersageTextmitJSON.parse()in ein Array um und speichere es in einer Konstantevorhersage. Hänge dann für jede Stadt invorhersageeinlimit einem Text wieHamburg: 12 °CanstaedteListean. - 2
Zeige in
sonnigTextdie Städte, in denen die Sonne scheint, als JSON an: Erzeuge mitfilter()ein Array nur mit den sonnigen Städten und wandle es mitJSON.stringify()in Text um. Sieh dir das Ergebnis an: Es sind dieselben Daten wie invorhersageText, nur ohne die anderen Städte, die Leerzeichen und die Zeilenumbrüche.