Часть ответа веб-сайта JSON имела это (... добавленный для контекста):
{..., now:function(){return(new Date).getTime()}, ...}
Добавление анонимных функций к допустимому JSON? Я ожидал бы каждый раз, когда Вы получаете доступ ко 'времени' для возврата другого значения.
№
JSON предназначен исключительно для языка описания данных. Как отмечалось на http://www.json.org, это "облегченный формат обмена данными". - а не язык программирования.
В соответствии с http://en.wikipedia.org/wiki/JSON поддерживаются "базовые типы":
null
Проблема в том, что JSON как язык определения данных вырос из JSON как нотация объектов JavaScript. Так как Javascript поддерживает eval на JSON, законно поместить код JSON внутри JSON (в этом случае использования). Если вы используете JSON для удаленной передачи данных, то я бы сказал, что это плохая практика - помещать методы в JSON, потому что вы, возможно, плохо смоделировали взаимодействие клиент-сервер. И, далее, при желании использовать JSON в качестве языка описания данных, я бы сказал, что вы можете попасть в неприятности, встраивая методы, потому что некоторые JSON парсеры были написаны с учетом только описания данных и могут не поддерживать определения методов в структуре.
Википедия JSON запись дает хороший повод не включать методы в JSON, ссылаясь на соображения безопасности:
Если вы абсолютно не доверяете источнику текста, и у вас есть необходимость разобрать и принять текст, который не совсем соответствует JSON, вам следует избегать eval() и вместо этого использовать JSON.parse() или другой специфический для JSON парсер. JSON парсер распознает только JSON текст и отвергает другой текст, который может содержать вредоносный JavaScript. В браузерах, которые предоставляют встроенную поддержку JSON, парсер JSON также работает намного быстрее, чем eval. Ожидается, что родная поддержка JSON будет включена в следующий стандарт ECMAScript.
Nope, definitely not.
Если вы используете приличный сериализатор JSON, он не позволит вам сериализовать такую функцию. Это действительный ОБЪЕКТ, но не действительный JSON. Какими бы ни были намерения этого сайта, он не посылает действительный JSON.
Насколько я знаю, она не является стандартной. Беглый взгляд на http://json.org/ подтверждает это.
.JSON явно исключает функции, так как они не предназначены для данных только на JavaScript. структура (несмотря на JS в названии).