Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Dataformater: JSON og XML | Grundlæggende Backend-Udvikling
Spring Boot Backend

bookDataformater: JSON og XML

I de foregående kapitler undersøgte vi, hvordan HTTP fungerer, og hvordan det overfører data. I dette kapitel ser vi nærmere på formater såsom JSON og XML, som er formater, der kan bruges til at overføre data i body af et serverrespons eller ved afsendelse af en forespørgsel til serveren.

Hvad er JSON?

JSON bruges til overførsel af data i et nøgle-værdi format, hvilket gør det meget praktisk at tilgå data og konvertere det direkte til et objekt.

Dette format understøtter arrays, objekter samt primitive værdier som strenge, tal og booleske værdier.

Dataformater i JSON

For arrays i JSON kan følgende syntaks anvendes:

{
  "courses": ["Math", "Science"]
}

Alle oplysninger omsluttes af krøllede parenteser, og nøglenavnet (som "courses") angives i anførselstegn. Værdien tilknyttet denne nøgle er i dette tilfælde et array (["Math", "Science"]), som er omsluttet af firkantede parenteser for at angive, at det er et array.

Hvis vi ønsker at overføre simple primitivtyper (såsom tal, strenge eller boolean-værdier) i JSON, kan vi gøre det således:

{
  "name": "John Doe",
  "age": 30,
  "isStudent": false
}

Vi kan overføre objekter i JSON-format. Et objekt repræsenteres af et sæt nøgle-værdi-par omsluttet af krøllede parenteser.

{
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  }
}

Hver nøgle er en streng og efterfølges af et kolon, med den tilsvarende værdi, som kan være et andet objekt, et array, en primitiv type eller null.

Overførsel af JSON via HTTP

Ved overførsel af data i JSON-format via HTTP anvendes både forespørgsler og svar Content-Type-headeren sat til application/json. I en forespørgsel placeres data i bodyforespørgslen, mens data i et svar placeres i body på svaret.

Forespørgselsstruktur:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "John Doe",
  "age": 30
}

Svarstruktur:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "success",
  "data": {
     "userId": 12345
   }
}

JSON-serialisering og -deserialisering

Serialisering konverterer en objekt eller datastruktur til et format, der er egnet til netværksoverførsel eller filopbevaring.

Deserialisering er den omvendte proces, som konverterer data fra JSON-format tilbage til et objekt eller en datastruktur til brug i koden.

Afhængighed fra videoen til integration af serialisering og deserialisering af JSON. Dette er nødvendigt, så vi kan bruge ObjectMapperklassen.

Det er nødvendigt at indsætte denne afhængighed i pom.xml filen og opdatere den.

Sådan bruges Maven Repository

Hvad er XML?

XML repræsenterer data ved hjælp af tags, der danner en hierarkisk struktur. Hvert element har både åbnings- og lukningstags og kan også indeholde attributter.

XML-syntaks

<person>
    <name>John Doe</name>
    <age>30</age>
    <isStudent>false</isStudent>
    <courses>
        <course>Math</course>
        <course>Science</course>
    </courses>
    <address>
        <street>123 Main St</street>
        <city>Anytown</city>
    </address>
</person>

Som det kan ses, er alt her opbygget af tags. Lister og objekter er ikke grundlæggende forskellige, men hvis man ønsker at repræsentere en simpel værdi, vil tagnavnet fungere som nøgle, og værdien inden i taggene vil være værdien.

XML-overførsel via HTTP:

Til overførsel af XML-data kan Content-Type-headeren indstilles til enten application/xml eller text/xml. Dataen placeres også i body af anmodningen eller svaret.

Eksempel på en anmodning:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/xml

<user>
    <name>John Doe</name>
    <age>30</age>
</user>

Eksempel på et svar:

HTTP/1.1 200 OK
Content-Type: application/xml

<response>
  <status>success</status>
  <data>
    <userId>12345</userId>
  </data>
</response>

XML-serialisering og -deserialisering

Afhængighed fra videoen til integration af serialisering og deserialisering af XML. Dette er nødvendigt, så vi kan anvende XmlMapperklassen.

Denne afhængighed indsættes i pom.xml filen og opdateres.

Resumé

JSON er det foretrukne valg for moderne webapplikationer på grund af dets lette og enkle karakter. Selvom XML kan være mindre bekvemt i mange webscenarier, kan det være nyttigt i tilfælde, der kræver en kompleks datastruktur og strenge skemaer.

1. Hvilket format bruges til at repræsentere data som key-value-par og er mere letvægtigt og bekvemt til netværksoverførsel?

2. Hvilket af følgende kodeeksempler er en gyldig JSON?

question mark

Hvilket format bruges til at repræsentere data som key-value-par og er mere letvægtigt og bekvemt til netværksoverførsel?

Select the correct answer

question mark

Hvilket af følgende kodeeksempler er en gyldig JSON?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

Suggested prompts:

What are the main differences between JSON and XML?

Can you explain when to use JSON versus XML?

How does serialization and deserialization work in practice?

Awesome!

Completion rate improved to 3.45

bookDataformater: JSON og XML

Stryg for at vise menuen

I de foregående kapitler undersøgte vi, hvordan HTTP fungerer, og hvordan det overfører data. I dette kapitel ser vi nærmere på formater såsom JSON og XML, som er formater, der kan bruges til at overføre data i body af et serverrespons eller ved afsendelse af en forespørgsel til serveren.

Hvad er JSON?

JSON bruges til overførsel af data i et nøgle-værdi format, hvilket gør det meget praktisk at tilgå data og konvertere det direkte til et objekt.

Dette format understøtter arrays, objekter samt primitive værdier som strenge, tal og booleske værdier.

Dataformater i JSON

For arrays i JSON kan følgende syntaks anvendes:

{
  "courses": ["Math", "Science"]
}

Alle oplysninger omsluttes af krøllede parenteser, og nøglenavnet (som "courses") angives i anførselstegn. Værdien tilknyttet denne nøgle er i dette tilfælde et array (["Math", "Science"]), som er omsluttet af firkantede parenteser for at angive, at det er et array.

Hvis vi ønsker at overføre simple primitivtyper (såsom tal, strenge eller boolean-værdier) i JSON, kan vi gøre det således:

{
  "name": "John Doe",
  "age": 30,
  "isStudent": false
}

Vi kan overføre objekter i JSON-format. Et objekt repræsenteres af et sæt nøgle-værdi-par omsluttet af krøllede parenteser.

{
  "address": {
    "street": "123 Main St",
    "city": "Anytown"
  }
}

Hver nøgle er en streng og efterfølges af et kolon, med den tilsvarende værdi, som kan være et andet objekt, et array, en primitiv type eller null.

Overførsel af JSON via HTTP

Ved overførsel af data i JSON-format via HTTP anvendes både forespørgsler og svar Content-Type-headeren sat til application/json. I en forespørgsel placeres data i bodyforespørgslen, mens data i et svar placeres i body på svaret.

Forespørgselsstruktur:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/json

{
  "name": "John Doe",
  "age": 30
}

Svarstruktur:

HTTP/1.1 200 OK
Content-Type: application/json

{
  "status": "success",
  "data": {
     "userId": 12345
   }
}

JSON-serialisering og -deserialisering

Serialisering konverterer en objekt eller datastruktur til et format, der er egnet til netværksoverførsel eller filopbevaring.

Deserialisering er den omvendte proces, som konverterer data fra JSON-format tilbage til et objekt eller en datastruktur til brug i koden.

Afhængighed fra videoen til integration af serialisering og deserialisering af JSON. Dette er nødvendigt, så vi kan bruge ObjectMapperklassen.

Det er nødvendigt at indsætte denne afhængighed i pom.xml filen og opdatere den.

Sådan bruges Maven Repository

Hvad er XML?

XML repræsenterer data ved hjælp af tags, der danner en hierarkisk struktur. Hvert element har både åbnings- og lukningstags og kan også indeholde attributter.

XML-syntaks

<person>
    <name>John Doe</name>
    <age>30</age>
    <isStudent>false</isStudent>
    <courses>
        <course>Math</course>
        <course>Science</course>
    </courses>
    <address>
        <street>123 Main St</street>
        <city>Anytown</city>
    </address>
</person>

Som det kan ses, er alt her opbygget af tags. Lister og objekter er ikke grundlæggende forskellige, men hvis man ønsker at repræsentere en simpel værdi, vil tagnavnet fungere som nøgle, og værdien inden i taggene vil være værdien.

XML-overførsel via HTTP:

Til overførsel af XML-data kan Content-Type-headeren indstilles til enten application/xml eller text/xml. Dataen placeres også i body af anmodningen eller svaret.

Eksempel på en anmodning:

POST /api/users HTTP/1.1
Host: example.com
Content-Type: application/xml

<user>
    <name>John Doe</name>
    <age>30</age>
</user>

Eksempel på et svar:

HTTP/1.1 200 OK
Content-Type: application/xml

<response>
  <status>success</status>
  <data>
    <userId>12345</userId>
  </data>
</response>

XML-serialisering og -deserialisering

Afhængighed fra videoen til integration af serialisering og deserialisering af XML. Dette er nødvendigt, så vi kan anvende XmlMapperklassen.

Denne afhængighed indsættes i pom.xml filen og opdateres.

Resumé

JSON er det foretrukne valg for moderne webapplikationer på grund af dets lette og enkle karakter. Selvom XML kan være mindre bekvemt i mange webscenarier, kan det være nyttigt i tilfælde, der kræver en kompleks datastruktur og strenge skemaer.

1. Hvilket format bruges til at repræsentere data som key-value-par og er mere letvægtigt og bekvemt til netværksoverførsel?

2. Hvilket af følgende kodeeksempler er en gyldig JSON?

question mark

Hvilket format bruges til at repræsentere data som key-value-par og er mere letvægtigt og bekvemt til netværksoverførsel?

Select the correct answer

question mark

Hvilket af følgende kodeeksempler er en gyldig JSON?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 1. Kapitel 5
some-alt