Формат JSON, tojson метод

В тази глава ще разгледаме работата с JSON формат. който се използва за представяне на обекти като низ.

В съвременни браузъри имат отлични техники, познаването на което тънкостите на работа с JSON просто и удобно.

Данните във формат JSON (RFC 4627), са:

Почти всички програмни езици имат библиотеки за превръщането на обекти, за да JSON.

Данните могат да бъдат произволно сложни обекти и масиви могат да съдържат и други обекти и масиви. Основното нещо е да съответстват на формата.

По-специално, на първите две свойства на обекта по-долу - са неверни:

метод JSON.parse подкрепя по-сложни алгоритми разбор.

Например, ние сме получили от сървъра обект с събитие събития данни.

Тя изглежда така:

Нека се опитаме да донесе това JSON.parse:

Фактът, че event.date стойност е низ, а не на датата обект. метод Местоположение JSON.parse знам какво е необходимо, за да го превърне в дата низ?

За възстановяване на предсказуем линия JSON.parse (ул, Reviver) е вторият параметър Reviver. което е функция от функция (ключ, стойност).

Ако тя е в списъка, в процеса на четене на обект от JSON.parse ред го предава на свой ред е създаден всички двойки ключ-стойност и може да се върне преустроен стойност или неопределено. ако трябва да пропускате.

В този случай, ние можем да създадете правило, че датата на ключ е винаги актуална:

Да се ​​обърне внимание на две точки:

Дата превърна в низ. Не е случайно: всички дати са с вграден метод toJSON. Резултатът в този случай - низ в UTC часова зона.

Задача стайна не метод toJSON. Поради това е сериализирани имоти трансфер.

Разбира се, бихме могли да добавим такъв метод, тогава резултатът щеше да има резултат:

  1. Тя може да се направи директно предизвикателство JSON.stringify (екип). Ако не, защо не?
  2. Какво подход бихте предложили за четене и възстановяване на такива обекти?
решение

Отговорът на първия въпрос

Отговорът на първия въпрос

Нормално повикване JSON.stringify (екип) да генерира грешка, тъй като лидер на обекти и войник в структурата отнасят един към друг.

JSON формат не дава пари за връзки.

решения

За да включите тези структури в JSON, обикновено два подхода:

Добавете отбор код toJSON:

Може да се помисли възможен проблем в структурата, вместо да използвате номерата на самоличност. Като правило, не е трудно, защото в сървъра на данните имат идентификатори, също.

Модифицираният структура може да изглежда така:

... Но е наистина решението ще бъде оптимално? Използвайте структура е станало по-трудно, а това е малко вероятно да се промени е заслужава да бъде направено само за JSON. Но ако има и други ползи, а след това може би си мислите.

Universal версия на подхода, описан по-горе - е използването на специално изпълнение на JSON, която не е включена в стандарта, и поддържа разширени помощни връзки формат.

Тя, например, е в рамките, Dojo.

Когато се обадите dojox.json.ref.toJson (екип) ще бъде създаден след представяне низ: