JSON, metoda tojson

În acest capitol ne vom uita la lucrul cu JSON format. care este utilizat pentru a reprezenta obiecte ca un șir de caractere.

În browserele moderne au tehnici excelente, cunoașterea care face subtilitățile de funcționare cu JSON simplă și confortabilă.

Datele în format JSON (RFC 4627) sunt:

Aproape toate limbajele de programare au biblioteci pentru conversia obiecte JSON.

Datele pot fi arbitrar obiecte complexe și matrice pot conține alte obiecte și matrice. Principalul lucru este de a se potrivi cu formatul.

În special, primele două proprietăți ale obiectului de mai jos - sunt incorecte:

Metoda JSON.parse suporta algoritmi mai complexe parsare.

De exemplu, am primit de la obiectul server cu evenimentul de date eveniment.

Se pare ca acest lucru:

Să încercăm să aducă acest JSON.parse:

Faptul că valoarea event.date este un șir de caractere, mai degrabă decât data de obiect. Metodă de localizare JSON.parse știu ce este nevoie pentru a transforma într-un șir de caractere dată?

Pentru recuperarea liniei predictive la JSON.parse (str, reviver) este al doilea parametru reviver. care este o funcție a funcției (cheie, valoare).

În cazul în care este listat, procesul de citire unui obiect de la linia JSON.parse transmite la rândul său, a creat toate perechile cheie-valoare și poate returna o valoare convertită sau nedefinită. în cazul în care ar trebui să rateze.

În acest caz, putem crea o regulă că data cheie este întotdeauna data:

Să acorde o atenție la două puncte:

Data transformat într-un șir de caractere. Nu este o coincidență: toate datele au o metodă toJSON built-in. Rezultatul, în acest caz - un șir de caractere în fusul orar UTC.

O cameră obiect nici o metodă toJSON. Prin urmare, este proprietăți de transfer serializate.

Desigur, am putea adăuga o astfel de metodă, atunci rezultatul ar fi primit rezultatul:

  1. Se poate face o provocare directă JSON.stringify (echipa). Dacă nu, de ce nu?
  2. Ce abordare ar sugera să citiți și recuperarea unor astfel de obiecte?
decizie

Răspunsul la prima întrebare

Răspunsul la prima întrebare

apel normal JSON.stringify (echipa) va genera o eroare, din moment ce liderul de obiecte și soldat în cadrul structurii se referă la unul pe altul.

JSON nu oferă bani pentru link-uri.

soluţii

Pentru a activa aceste structuri în JSON, de obicei, două abordări:

Adăugați codul echipei toJSON:

Puteți lua în considerare o posibilă problemă în structura, în loc de a folosi id-ul referințelor. De regulă, nu este dificil, deoarece pe serverul de la datele au identificatori, de asemenea.

Structura modificată poate arata astfel:

... Dar este adevărat că soluția va fi optimă? Utilizați structura a devenit mai dificilă, iar acest lucru este puțin probabil să se schimbe este în valoare de a face doar pentru JSON. Dar dacă există alte beneficii, atunci s-ar putea crede.

Versiunea universală a abordării descrise mai sus - este utilizarea unui anumit punerea în aplicare a JSON, care nu este inclusă în standard, și sprijină formatul de link-uri avansate de sprijin.

Ea, de exemplu, este în cadrul, Dojo.

Când apelați dojox.json.ref.toJson (echipa) va fi creat în urma unei reprezentare string: