Categories
Web (NL) Ontwikkelaars Software Ontwikkeling

JSON! Wie is Jason waar ontwikkelaars het altijd over hebben?

“Wie is die Jason waar ze (“Software Ontwikkelaars”) het altijd over hebben?” JSON – JavaScript Object Notation

Als je wel eens bij de ontwikkelaars op de werkvloer komt dan hoor je wel een het woord “JSON” vallen. Dan hebben ze het vaak niet over een persoon maar over een notatie

Tenzij er toch een Jason bij ontwikkeling werkt 😉

Ze hebben het over JavaScript Object Notatie (JavaScript Object Notation). Een standaard die heel populair is geworden om data mee in te formateren op het internet. Misschien heb je ze ook wel een over een (REST) API horen praten, daarover later meer.

English Version -> This post is also available in English.

Om te beginnen met een quote van Wikipedia:

JSON of JavaScript Object Notation, is een gestandaardiseerd gegevensformaat. JSON maakt gebruik van voor de mens leesbare tekst in de vorm van data-objecten die bestaan uit een of meer attributen met bijbehorende waarden. Het wordt hoofdzakelijk gebruikt voor uitwisseling van data tussen server en webapplicatie, als een alternatief voor XML.

Bron: https://nl.wikipedia.org/wiki/JSON

Voorbeelden van JSON

Het is dus een Open Standaard op het internet, net zoals de meter en de kilometer zijn vastgelegd. zijn er ook afspraken over het JSON formaat. Laten we eens een voorbeeld van een JSON object bekijken (of ga door naar een uitgebreider voorbeeld)

{
    "titel": "JSON niet Jason!"
}

Dit is een manier om de computer te vertellen dat dit een (JavaScript) object is, een Tupel(https://nl.wikipedia.org/wiki/Tupel) (Informatica / Wiskunde) met een Key (‘titel’) en Waarde (‘JSON niet Jason!’)
Dave kan deze waardes in in al zijn software gebruiken (Websites, computer programma’s en Apps voor op je smartphone)

Je kan nog meer informatie aan zo’n object toevoegen zodat je bijvoorbeeld kan bijhouden wanneer dit object is gemaakt:
In dit voorbeeld voeg ik een het veld gemaaktOp toe aan het JSON object:

{
    "titel": "JSON niet Jason!",
    "gemaaktOp": "2020-01-10 06:30:00 (+0100)"
 }

De waarde van het veld “gemaaktOp” krijgt de datum “2020-01-10 06:30:00 (+0100)” waarop het object is gemaakt.

Omdat het makkelijk te lezen is en eenvoudig te begrijpen is heeft deze notatie vaak de voorkeur boven het minder leesbare XML.

XML ( Extensible Markup Language ) in vergelijking met JSON

XML is ook manier om data weer te geven, maar waarschijlijk leest dezelfde data minder makkelijk voor mensen.

Hetzelfde voorbeeld als hierboven maar dan in XML formaat:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <titel>JSON niet Jason!</titel>
   <gemaaktOp>2020-01-10 06:30:00 (+0100)</gemaaktOp>
</root>

Computers en software maakt het niet zoveel uit, maar de meeste ontwikkelaars hebben een duidelijke voorkeur.
Dave geeft de voorkeur aan JSON boven XML, ikzelf ook…

Als Sanne een factuur heeft gemaakt voor een klant. Dan kan dat in de centrale database worden opgeslagen. De REST API zorgt ervoor dat andere afdelingen en systemen daar ook gebruik van kunnen maken. Bijvoorbeeld een systeem wat een facturatie-email over deze factuur moet verzenden. Dat systeem maakt de achtergrond een REST API call. (aanroep naar het systeem)
Zodoende kan Mark netjes de PDF als bijlage bijvoegen en onder andere het totaalbedrag en betalingstermijn vermelden in de mail.

Voorbeeld Factuur in JSON formaat

GET /facturen?include=items HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
	"id": 46225,
        "attempt_count": 0,
	"balance": 100.00,
	"created_at": 1411229882,
	"currency": "EUR",
	"customer": 15464,
	"date": 1416280400,
	"discounts": [],
	"draft": false,
	"due_date": 1417800000,
	"items": [{
			"amount": 16,
			"catalog_item": null,
			"description": null,
			"discountable": true,
			"discounts": [],
			"id": 7,
			"metadata": {},
			"name": "Pak A4 Papier",
			"object": "line_item",
			"quantity": 2,
			"taxable": true,
			"taxes": [],
			"type": "product",
			"unit_cost": 8
		},
		{
			"amount": 8,
			"catalog_item": "Bezorging",
			"description": null,
			"discountable": true,
			"discounts": [],
			"id": 9,
			"metadata": {},
			"name": "Bezorging",
			"object": "line_item",
			"quantity": 1,
			"taxable": true,
			"taxes": [],
			"type": "service",
			"unit_cost": 8
		}
	],
	"metadata": {},
	"name": null,
	"next_payment_attempt": null,
	"notes": "Gelieve te betalen voor 2020-01-31...",
	"number": "FACT-2020-01-20-0016",
	"object": "invoice",
	"paid": false,
	"payment_url": "https://api.samauto.nl/facturen/IZmXbVOPyvfD3GPBmyd5FwXYj/betalen",
	"pdf_url": "https://facturen.samauto.nl/IZmXbVOPyvfD3GPBmyd5FwXYj/pdf",
	"ship_to": null,
	"status": "not_sent",
	"subscription": null,
	"subtotal": 24,
	"taxes": [{
		"amount": 5.04,
		"id": 20554,
		"object": "tax",
		"tax_rate": 21
	}],
	"total": 29.04,
	"url": "https://samauto.nl/facturen/IZmXbVOPyvfD3GPBmyd5FwXYj"
}

Mark van Marketing heeft een nieuwe email ontworpen om naar de klant een te versturen als er een nieuwe factuur is aangemaakt (Event / Trigger) en kan daarna gegevens ook gebruiken in zijn email -layouts en -templates.

Zo hoeven we bij SaMauto maar 1 keer de data te hebben en we kunnen het overal gebruiken! Handig zo’n JSON REST API.

Zodoende kunnen er makkelijk nieuwe functies worden aangeboden.

Nieuwe IOS app? Geen probleem, gewoon gebruik maken van de bestaande API en alle data netjes weergeven.

Seintje op een Android telefoon hoeveel saldo je nog hebt openstaan bij SaMauto? Voer een API call uit naar de facturatie API en je hebt meteen de gewenste informatie voor in het pushbericht.

1 reply on “JSON! Wie is Jason waar ontwikkelaars het altijd over hebben?”

Leave a Reply

Your email address will not be published. Required fields are marked *