Так как вы используете jQuery, я расширил его $.parseJSON()
функциональность, поэтому он может сделать это преобразование для вас автоматически и прозрачно .
Он не только конвертирует.чистые даты, но даты ISO также.Даты ISO поддерживаются встроенными конвертерами JSON во всех основных браузерах, но они работают только в одном направлении, поскольку спецификация JSON не поддерживает тип данных даты.
Прочитать все подробности (не нужно копировать содержимое сообщения блога здесьпотому что это будет слишком много) в моем блоге и получите код.Идея остается прежней: изменить поведение jQuery по умолчанию $.parseJSON()
, чтобы он мог определять даты .Net и ISO и автоматически преобразовывать их при анализе данных JSON.Таким образом, вам не нужно просматривать проанализированные объекты и конвертировать даты вручную.
Как это используется?
$.parseJSON(yourJSONstring, true);
Смотрите дополнительную переменную?Это гарантирует, что весь ваш существующий код работает без каких-либо изменений.Но если вы укажете дополнительный параметр и установите его на true
, он будет определять даты и соответствующим образом их конвертировать.
Почему это решение лучше, чем ручное преобразование? (, предложенный Хуаном )
- Поскольку вы снижаете риск человеческого фактора забыть преобразовать некоторую переменную в вашем дереве объектов (объекты могут быть глубокими и(широкий)конверсии на стороне клиента.Если вы делаете это автоматически, вам не нужно думать (или делать что-либо) об этом.
Две главные причины из головы.
При переопределении функциональности jQuery чувствуетнеправильно
Если вы не хотите переопределять существующие функции $.parseJSON()
, вы можете минимально изменить код и переименовать расширение в $.parseJSONwithdates()
, а затем всегда использовать свою собственную функцию при разборе JSON.Но у вас может быть проблема, когда вы устанавливаете Ajax-вызовы на dataType: "json"
, который автоматически вызывает исходный анализатор.Если вы используете этот параметр, вам придется переопределить существующую функциональность jQuery.
Хорошо также то, что вы не меняете исходный файл кода библиотеки jQuery.Вы помещаете это расширение в отдельный файл и используете его по собственному желанию.Некоторые страницы могут использовать его, а другие нет.Но разумно использовать его везде, иначе у вас будет та же проблема человеческого фактора, если вы забудете включить расширение.Просто включите ваше расширение в какой-нибудь глобальный файл Javascript (или главную страницу / шаблон), который вы можете использовать.