JSON este un formatul de date de facto folosit de API-urile pe arhitectura REST. A fost propus de Douglas Crockford în 2001.
Abrevierea provine de la JavaScript Object Notation întocmai pentru a evidenția compatibilitatea acestui format cu limbajul de unde este derivat: un json este un obiect în Javascript.
Structura este una arborescentă, cu un ”nod” rădăcină din care derivă mai multe noduri, fiecare identificat cu o cheie unică de tip string. Valorile din aceste noduri pot fi de 5 tipuri: string, număr, boolean (true/false), listă (array) sau obiect. Valorile de tip listă sau obiect pot la rândul lor să includă valori scalare, liste de obiecte sau alte obiecte (nested).
Citirea din formatul JSON în Javascript se poate face direct prin referința nodului care are valoarea, utilizând denumirea cheii:
// Lang: Javascript
let response = await fetch('https://my-json-server.typicode.com/typicode/demo/db')
let json = await response.json()
// "Post 1"
console.log(json.posts[0].title)
// "typicode"
console.log(json.profile.name)
Bine de știut
Specificația (RFC 8259), nu limitează utilizarea cheilor duplicat, așadar un json cu o cheie care apare de două ori este valid, însă dacă vrem să extragem valoarea din acea cheie, specificația limbajului Javascript nu indică care dintre cele două va fi aleasă, așadar vom avea un comportament nedefinit. De aceea este indicată evitarea cheilor duplicat.
Json este un format limitat în ceea ce privește formatele, de exemplu nu specifică un format pentru dată sau pentru dublă precizie. Soluția adoptată în aceste cazuri fiind trimiterea lor ca string. În cazul valorilor de tip dată (1970-01-01),dacă nu este relevant fusul orar acestea se trimit și ca un timestamp - valoare întreagă.
Referințe: