JSON
JSON står for JavaScript Object Notation. Med JSON kan vi lagre objekter som skal brukes i JavaScript, som ren tekst. Det at dataene skilles fra koden, gjør det enklere å endre og vedlikeholde data som brukes av en applikasjon eller webside. Dette ligner litt på å bruke Firebase eller andre NoSQL-databaser, men forskjellen er at JSON-data kan lagres lokalt, i samme mappe som websiden.
Data i ei JSON-fil har en spesifikk syntaks som skiller seg litt fra hvordan man lager objekter i JavaScript. Ei JSON-fil kan inneholde ett objekt eller ei liste (array) med objekter. Her er et eksempel på ei JSON-fil med ett objekt:
JSON-data skrives, som du kan se, som par av feltnavn og verdi, med et kolon imellom, slik:
"feltnavn":"verdi"
Når vi setter flere felter etter hverandre, bruker vi komma imellom og krøllparenteser rundt for å angi det som et objekt.
Hvis et felt har flere verdier, kan vi sette verdiene i ei liste, slik:
Som nevnt kan ei JSON-fil inneholde ei liste med flere objekter. Det kan vi skrive på denne måten:
Noen ganger kan det være nyttig å lagre ett eller flere objekter som verdi til et felt inne i et objekt. Det må vi gjøre hvis vi vil legge til informasjon om eieren av hunden. Da gjør vi slik:
Det er mange måter å få JSON-data inn på nettsiden din på. I utgangspunktet er JSON-data bare tekst, så det kan overføres på mange måter. Ofte vil JSON-data leses inn fra en webserver, fra en database eller fra ei tekstfil på datamaskinen din. Det finnes derfor innebygde metoder i JavaScript for å konvertere JSON-data (tekst) til JavaScript-objekter, og motsatt. De mest brukte av disse er JSON.
parse
()
, som gjør om JSON-data til JavaScript-objekter, og JSON.
stringify
()
, som gjør om JavaScript-objekter til JSON-data. Disse kan du lese om på W3Schools:
Hvis du har lagret ei JSON-fil sammen med nettsiden din, eller hvis du har URL-en til ei JSON-fil som ligger på nettet, kan du importere JSON-dataene som en modul i JavaScript, slik:
import data from
"_URL_"
with
{
type
: "json" };
Denne koden både importerer JSON-dataene, og konverterer dem (parse) til JavaScript-data. Du trenger derfor ikke å bruke metoden JSON.parse().
Merk at når du bruker import, må du legge inn type
="
module
"
i script-taggen på nettsida di, slik:
<
script
type
="
module
">
import data from
"_URL_" with { type: "json" };
</
script
>
Merk også at data
ikke skal stå i krøllparenteser.
I tilfellet med hunder.json blir JSON-dataene importert som ei liste med objekter, med variabelnavnet du har satt (data
i eksempelet over). Dette variabelnavnet kan settes til å være hva du vil, for eksempel hunder
. For å hente ut navnet til den første hunden, kan du skrive denne koden:
Denne koden vil skrive ut Fido i konsollen.
For å skrive ut informasjon om alle hundene kan du bruke ei løkke:
Dette vil gi følgende utskrift:
Hvis du i tillegg vil skrive ut yndlingsmaten til hundene, må du bruke ei løkke inne i løkka for å skrive ut innholdet av lista med yndlingsmat for hver hund. For at utskriften skal bli fin, må vi trikse litt for å få inn komma og og når vi lister opp de forskjellige mattypene. Koden blir slik:
Da blir utskriften slik: