Spring til indhold
Academi.dk

JavaScript

JSON

Let øvet DA↔EN-ordliste

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.

Eksempel
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.

Eksempel
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

Eksempel
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

Senest gennemgået .