Формат 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. Поради това е сериализирани имоти трансфер.
Разбира се, бихме могли да добавим такъв метод, тогава резултатът щеше да има резултат:
- Тя може да се направи директно предизвикателство JSON.stringify (екип). Ако не, защо не?
- Какво подход бихте предложили за четене и възстановяване на такива обекти?
Отговорът на първия въпрос
Отговорът на първия въпрос
Нормално повикване JSON.stringify (екип) да генерира грешка, тъй като лидер на обекти и войник в структурата отнасят един към друг.
JSON формат не дава пари за връзки.
решения
За да включите тези структури в JSON, обикновено два подхода:
Добавете отбор код toJSON:
Може да се помисли възможен проблем в структурата, вместо да използвате номерата на самоличност. Като правило, не е трудно, защото в сървъра на данните имат идентификатори, също.
Модифицираният структура може да изглежда така:
... Но е наистина решението ще бъде оптимално? Използвайте структура е станало по-трудно, а това е малко вероятно да се промени е заслужава да бъде направено само за JSON. Но ако има и други ползи, а след това може би си мислите.
Universal версия на подхода, описан по-горе - е използването на специално изпълнение на JSON, която не е включена в стандарта, и поддържа разширени помощни връзки формат.
Тя, например, е в рамките, Dojo.
Когато се обадите dojox.json.ref.toJson (екип) ще бъде създаден след представяне низ: