Treci la conținutul principal

Limba pe care o vorbesc API-urile

API-urile schimbă date sub formă de JSON — text ca {"id": 1, "name": "Ana"}. Pachetul encoding/json din Go traduce în ambele direcții: Marshal transformă o structură în JSON, iar Unmarshal completează o structură pornind de la JSON.

Etichetele de structură leagă cele două lumi: eticheta `json:"name"` pune în corespondență câmpul exportat Name din Go cu cheia JSON scrisă cu litere mici. Doar câmpurile exportate (cu prima literă mare) sunt traduse.


De la structură la JSON

json.Marshal produce JSON compact, pentru mașini; json.MarshalIndent produce JSON lizibil, pentru oameni și pentru jurnale. Opțiunea omitempty din etichetă elimină câmpurile care au valoarea zero.

Marshal, în formă lizibilă și compactă

Ana nu are e-mail, iar omitempty scoate complet câmpul gol din JSON-ul ei. Fișa completă a lui Ben se afișează indentată.

Prompt
Scrie un program Go cu o structură User care folosește etichete json și opțiunea omitempty pentru email. Serializează cu Marshal un utilizator fără email în formă compactă și un utilizator complet cu MarshalIndent, afișând ambele rezultate JSON.
Ieșire: program Go și rezultatul capturat

De la JSON la structură

json.Unmarshal analizează JSON-ul într-o structură pe care o oferi tu (ca pointer). Cheile JSON necunoscute sunt pur și simplu ignorate; cheile lipsă lasă valoarea zero. Eroarea returnată este singurul semnal că JSON-ul era greșit — verific-o mereu.

Unmarshal și cheia în plus ignorată

JSON-ul conține o cheie extra pe care structura nu o are — nicio eroare, este sărită. În schimb, un JSON stricat returnează o eroare adevărată.

Prompt
Scrie un program Go care deserializează cu Unmarshal un șir JSON cu o cheie necunoscută în plus într-o structură User, afișând structura completată, iar apoi încearcă să deserializeze un JSON stricat și afișează eroarea.
Ieșire: program Go și rezultatul capturat

Date imbricate

Datele reale trimise de API-uri sunt imbricate: o comandă poartă cu ea utilizatorul și lista de articole. Structurile din structuri și feliile devin automat obiecte și tablouri JSON — nu e nevoie de nimic special.

O comandă cu un utilizator înăuntru

Structura imbricată User devine un obiect JSON imbricat, iar felia de articole devine un tablou JSON — forma datelor Go este forma JSON-ului.

Prompt
Scrie un program Go cu o structură Order care conține un ID, o felie cu numele articolelor și o structură User imbricată, toate cu etichete json. Serializează o comandă cu MarshalIndent și afișeaz-o pentru a arăta obiectele și tablourile imbricate.
Ieșire: program Go și rezultatul capturat