JavaScript
JSON
JSON er en tekstform, der ligner et JavaScript-objekt, og som bruges til at sende data mellem programmer. Alt i JSON er tekst, så før du kan arbejde med det, skal det laves om til et rigtigt objekt. Det gør JSON.parse, og JSON.stringify går den anden vej.
Forudsætter, at du har set objekter .
Hvorfor der findes et format til det
To programmer kan ikke sende et objekt til hinanden. De kan kun sende tekst. JSON er den aftale, næsten hele internettet bruger om, hvordan et objekt skrives som tekst, og hvordan man læser det tilbage igen.
Det er derfor, du møder det, så snart du henter data fra et API: svaret er tekst, der ser ud som et objekt.
const tekst = '{"navn":"Ida","alder":21}';
console.log(typeof tekst);
const objekt = JSON.parse(tekst);
console.log(typeof objekt);
console.log(objekt.navn); Output
Tryk på “Kør koden”.
Før JSON.parse er det en string, og tekst.navn ville give undefined.
Efter er det et rigtigt objekt med felter, du kan bruge.
Den anden vej
JSON.stringify laver et objekt om til tekst. Det bruger du, når du skal sende
noget, for eksempel indholdet af en formular til en server.
const bruger = { navn: "Omar", aktiv: true, point: 42 };
const tekst = JSON.stringify(bruger);
console.log(tekst);
console.log(JSON.stringify(bruger, null, 2)); Output
Tryk på “Kør koden”.
Den sidste linje er værd at huske: to ekstra argumenter, og du får pænt indrykket tekst i stedet for én lang linje. Det er den hurtigste måde at kigge på et indviklet objekt, mens du fejlfinder.
JSON er strengere end JavaScript
JSON ligner et objekt, men reglerne er strammere:
- Nøgler skal stå i dobbelte anførselstegn.
{"navn": "Ida"}, ikke{navn: "Ida"}. - Kun dobbelte anførselstegn. Enkelte er ikke tilladt.
- Intet komma efter det sidste element.
- Ingen kommentarer.
- Ingen funktioner. Kun tekst, tal, sandhedsværdier,
null, arrays og objekter.
Et realistisk svar fra et API
const svar = '{"by":"København","maaling":{"temp":17.4,"vind":5},"varsler":["regn","blæst"]}';
const data = JSON.parse(svar);
console.log(data.by);
console.log(data.maaling.temp);
console.log(data.varsler[0]);
console.log(data.varsler.length); Output
Tryk på “Kør koden”.
Læg mærke til, at der både er et objekt og et array inde i objektet. Det er normalt, og du finder vej med samme punktum- og kantparentesnotation som ellers.
Kort opsamling
- JSON er tekst, ikke et objekt.
JSON.parse(tekst)giver et objekt,JSON.stringify(objekt)giver tekst.- Nøgler skal i dobbelte anførselstegn, og der må ikke være efterstillet komma.
- Får du en fortolkningsfejl, så se på teksten først.
Læs videre
- Objekter Objekter i JavaScript forklaret på dansk: nøgler og værdier, punktnotation, indlejrede objekter og arrays af objekter. Med eksempler du kan køre.
- fetch - hent data fra et API Sådan bruger du fetch i JavaScript til at hente data fra et API. Forklaret på dansk, med fejlhåndtering, statuskoder og de fælder alle falder i.
- Hvad er et API? Hvad er et API? Forklaret på dansk uden fagsprog, med et konkret eksempel på et kald, hvordan svaret ser ud, og hvad en API-nøgle er til.
Senest gennemgået .