Skip to end of banner
Go to start of banner

XML of JSON voor de MedMij lijsten

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

MedMij maakt gebruik van verschillende lijsten voor onder andere de beveiliging van het MedMij netwerk. Deze lijsten bevatten deelnemerinformatie en zijn opgemaakt in XML. Al enige tijd speelt de vraag of XML wel het wenselijke formaat is, of dat gekozen moet worden voor JSON.

JSON en XML zijn formats waarmee gegevens worden gepresenteerd. Beide vormen kunnen worden gebruikt bij gegevensuitwisseling tussen applicaties. JSON is een open gegevensuitwisselingsformaat dat leesbaar is voor zowel mensen als machines. JSON is onafhankelijk van welke programmeertaal dan ook en is een veelgebruikte API-uitvoer in een breed scala aan toepassingen. XML is een opmaaktaal die regels biedt om gegevens te definiëren. Het maakt gebruik van tags om onderscheid te maken tussen gegevensattributen en de daadwerkelijke gegevens. Hoewel beide formaten worden gebruikt bij gegevensuitwisseling, is JSON de nieuwere, flexibelere en populairdere optie.

Advies

Hoewel de lijsten op moment van schrijven in XML worden uitgegeven en voor de verschillende lijsten ook schema’s zijn gemaakt, is JSON een interessante optie. Het advies van de Lead Architect van MedMij is dan ook dat we overstappen en wel om de volgende redenen:

  • MedMij is de enige uitgever van de lijsten. Hierdoor is het gebruik van schema’s minder van belang, het netwerk moet erop kunnen vertrouwen dat MedMij de lijsten volgens een bepaalde structuur opbouwt. Deze structuur kan natuurlijk wel in het afsprakenstelsel beschreven worden, net als dat het afsprakenstelsel nu de schema’s bevat in de vorm van XSD bestanden.

  • Qua omvang en complexiteit van de gegevens heeft JSON de voorkeur. Het is kleiner en eenvoudig te lezen door mens en machine. Hierdoor verbeteren de prestaties van de applicaties die de lijsten moeten opstellen en verwerken.

  • De binnen de MedMij lijsten gebruikte datatypen vallen binnen de range die JSON biedt.

  • Beveiliging wordt vooral op netwerk-niveau geregeld, waardoor partijen die met MedMij communiceren vertrouwd kunnen worden. Die hoeft niet extra op de data-laag worden uitgevoerd.

Wat is JSON?

JSON staat voor JavaScript Object Notation. Het is een lichtgewicht en voor mensen leesbaar gegevensformaat dat key-value pairs en arrays gebruikt om objecten en waarden weer te geven. JSON is afgeleid van JavaScript, maar is taal-onafhankelijk en kan door veel programmeertalen worden gelezen. JSON wordt vaak gebruikt voor webapplicaties, API’s en NoSQL-databases.

Voordelen van JSON

JSON is vanwege een aantal voordelen vaak het voorkeursformaat voor scenario's voor gegevensverwerking. Vergeleken met XML is JSON beknopter en compacter, waardoor het sneller kan worden verwerkt en gegenereerd. Dit vermindert de omvang en bandbreedte van gegevensoverdracht en verbetert de prestaties en efficiëntie van gegevensverwerking. Bovendien is JSON gemakkelijker te lezen en te schrijven dan XML, wat de leesbaarheid en onderhoudbaarheid van de code verbetert. Het ondersteunt ook native gegevenstypen zoals getallen, booleans en nul-waarden, waardoor de representatie en validatie van gegevens wordt vereenvoudigd. Bovendien maakt de compatibiliteit met JavaScript en andere webtechnologieën het gemakkelijker om webapplicaties en API's te ontwikkelen en te integreren.

Nadelen van JSON

JSON heeft enkele nadelen ten opzichte van XML die de toepasbaarheid en functionaliteit ervan beperken. Het is bijvoorbeeld minder expressief en flexibel dan XML, wat betekent dat er beperkingen zijn aan de complexiteit en verscheidenheid van datastructuren en schema's. Bovendien ondersteunt JSON geen opmerkingen, namespaces of attributen, waardoor het moeilijk wordt om metagegevens of annotaties toe te voegen. Definiëren van documenten met schema’s voor JSON is beperkt, al wordt hier snel in verbeterd. Dit komt de interoperabiliteit en mogelijkheden tot valideren niet ten goede, iet wat wel gewenst is bij de communicatie tussen meerdere verschillende systemen. Binaire gegevens worden niet standaard ondersteund in JSON, waardoor extra codering en decodering van gegevens vereist is. Ten slotte is JSON minder veilig dan XML, waardoor de gegevens kwetsbaar zijn voor injectieaanvallen of cross-site scripting.

Wat is XML?

XML staat voor Extensible Markup Language. Het is een flexibel en gestructureerd gegevensformaat dat tags en attributen gebruikt om elementen en hun relaties te definiëren. XML is bovendien taalonafhankelijk en kan door veel tools en standaarden worden verwerkt. XML wordt vaak gebruikt voor documentopmaak, configuratiebestanden en gegevensuitwisseling.

Overeenkomsten

JSON en XML zijn beide formaten waarmee gegevens opgemaakt worden voor communicatie binnen en tussen informatiesystemen. Hiermee kunnen gegevens op een gestandaardiseerde manier uitgewisseld worden. Hiermee worden de communicatie gestandaardiseerd, het gebruik van de informatie blijft een applicatie-aangelegenheid.

Om gegevens onderling uit te wisselen, moeten de volgende stappen worden ondernemen:

  1. Converteer de gegevens naar XML of JSON

  2. Verzend het XML- of JSON-bestand via het MedMij netwerk

  3. Converteer het XML- of JSON-bestand naar een voor de applicatie leesbare variant.

Voor beide formaten is de werking in deze zin hetzelfde.

Verschillen

Format

JSON gebruikt key-value pairs om een boomstructuur te creëren. De sleutel (key) is een string, die het paar identificeert. De waarde (value) is de informatie die u aan die sleutel geeft. XML is daarentegen een opmaaktaal: een subset van SGML met een structuur die lijkt op HTML. Het slaat gegevens op in een boomstructuur die informatielagen presenteert die u kunt volgen en lezen. De boom begint met een hoofdelement (bovenliggend element) voordat er informatie wordt gegeven over onderliggende elementen. Deze uitgebreide structuur is handig bij het laden van veel variabelen en dynamische configuraties.

{
  organisaties: [
    {
      naam: "MedMij"
      adres: {
        straat: "Maanweg"
        huisnummer: 174
        toevoeging: "Gebouw C, 3e etage"
        postcode: "2516 AB"
        stad: "Den Haag"
      }
    }
  ]
}
<organisaties>
  <organisatie>
    <naam>MedMij</naam>
    <adres>
      <straat>Maanweg</straat>
      <huisnummer>174</huisnummer>
      <toevoeging>Gebouw C, 3e etage</toevoeging>
      <postcode>2516 AB</postcode>
      <stad>Den Haag</stad>
    </adres>
  </organisatie>
</organisaties>

Syntax

De syntax die in JSON wordt gebruikt, is compacter en gemakkelijker te schrijven en lezen. Met JSON kunnen eenvoudig objecten worden gedefinieerd. XML is uitgebreider en vervangt bepaalde tekens voor entiteitsreferenties. In plaats van het <-teken gebruikt XML bijvoorbeeld de entiteitsreferentie &it;. XML maakt ook gebruik van eindtags, waardoor het langer is dan JSON.

Parsen

Beide formaten moeten omgezet worden na ontvangst, echter voor JSON is dit een stuk eenvoudiger. Door het verschil in syntax is JSON eenvoudiger te lezen en door de kleinere omvang gaat dit ook nog sneller.

Schemadocumentatie

Schemadocumentatie beschrijft het doel van een bestand en laat zien waarvoor het moet worden gebruiken. XML-documenten hebben een link naar hun schema in de header. Het schema is tevens in XML-formaat. De XML kan worden gevalideerd aan de hand van het schema en er kan worden gecontroleerd of alles correct en zonder fouten te laden is.

Met JSON kunnen ook schema's worden gebruikt. Ze zijn echter eenvoudiger en bieden meer flexibiliteit.

Ondersteuning voor data types

JSON ondersteunt slechts een beperkt aantal gegevenstypen, zoals strings, getallen en objecten. JSON kan ook Booleaanse arrays ondersteunen, wat XML niet kan zonder extra tags toe te voegen.

XML is echter flexibeler en ondersteunt complexe gegevenstypen zoals binaire gegevens en tijdstempels.

Makkelijk te gebruiken

Als opmaaktaal is XML complexer en vereist een tagstructuur. JSON is daarentegen een gegevensformaat dat voortkomt uit JavaScript. Het maakt geen gebruik van tags, waardoor het compacter en gemakkelijker leesbaar is voor mensen. JSON kan dezelfde gegevens in een kleinere bestandsgrootte weergeven voor snellere gegevensoverdracht.

Beveiliging

JSON-parsing is veiliger dan XML. De structuur van XML is kwetsbaar voor ongeoorloofde wijzigingen, waardoor een beveiligingsrisico ontstaat dat bekend staat als XML External Entity Injection (XXE). Het is ook kwetsbaar voor ongestructureerde externe documenttypedeclaratie (DTD). Beide problemen kunnen eenvoudig voorkomen worden door de DTD-functie tijdens de verzending uit te schakelen.

Hoe kies je JSON of XML?

Bij de keuze tussen JSON en XML voor gegevensverwerking is er geen one-size-fits-all antwoord mogelijk; het hangt af van de aard, het doel en de context van de gegevens en de verwerkingsvereisten. Factoren waarmee rekening moet worden gehouden, zijn onder meer de omvang en complexiteit van de gegevens, de leesbaarheid en onderhoudbaarheid van de code, de prestaties en efficiëntie van de gegevensverwerking, gegevenstypen en -validatie, evenals compatibiliteit en beveiliging. Over het algemeen is JSON geschikter voor eenvoudige en kleine gegevens, beter leesbaar en onderhoudbaar voor webontwikkelaars, sneller en efficiënter voor webapplicaties of API's, ondersteunt native datatypen maar mist een uitgebreide standaard schema-taal. JSON is beter compatibel met webtechnologieën, maar minder veilig dan XML. Aan de andere kant is XML geschikter voor complexe en grote gegevens, vereist typeconversie en validatie, is veiliger maar minder compatibel met webtechnologieën.

  • No labels