Как передать значение даты JSON с помощью ASP.NET MVC использование JSON.NET? [дубликат]

Ядро Linux использует синхронизацию прерывания устройства (мышь, клавиатура, жесткие диски) для генерации энтропии. Существует хорошее статья о Википедии на энтропии.

36
задан Community 23 May 2017 в 12:17
поделиться

6 ответов

Если вы не привязаны к сериализатору MS JSON, вы можете использовать Json.NET . Он поставляется с IsoDateTimeConverter для решения проблем с сериализацией дат. Это преобразует даты в строку в формате ISO 8601 .

Например, в нашем проекте сериализация myObject обрабатывается с помощью следующего кода.

JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
jsonNetResult.Data = myObject;

Если вы решите окунуться в Json.NET, вы также захотите получить JsonNetResult ], поскольку он возвращает ActionResult, который можно использовать в приложении ASP.NET MVC. Его довольно легко использовать.

Для получения дополнительной информации см .: Хорошее (Дата) время с Json.NET

11
ответ дан 27 November 2019 в 06:02
поделиться

Не все согласны со мной в том, что это хорошая идея, но я обнаружил, что чаще всего возвращаю отформатированные строки вместо правильных дат. См. Как я обрабатываю даты JSON, возвращаемые ASP.NET AJAX .

5
ответ дан 27 November 2019 в 06:02
поделиться

Взгляните на сообщение в блоге jQuery, Ajax, ASP.NET и даты .

В нем подробно описано, как работать с ASP.NET MVC и jQuery для передачи дат через JSON между сервером и клиентом.

0
ответ дан 27 November 2019 в 06:02
поделиться

Это может показаться некрасивым, но работает:

 var epoch = (new RegExp('/Date\\((-?[0-9]+)\\)/')).exec(d);
 $("#field").text((new Date(parseInt(epoch[1]))).toDateString());

Наверное, не обязательно сопоставлять всю строку, а просто (-? [0- 9] +) достаточно ...

6
ответ дан 27 November 2019 в 06:02
поделиться

Поиграв с библиотекой Json.NET, мне интересно, почему вы решили использовать IsoDateTimeConverter вместо JavascriptDateTimeConverter.

Я обнаружил, что это проще использовать с Ext JS интерфейсы, которые я использовал при сериализации дат из контроллера MVC.

JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.SerializerSettings.Converters.Add(new JavaScriptDateTimeConverter());
jsonNetResult.Data = myObject; 

Я возвращаю эти данные в Ext.data.JsonStore, который может получить возвращаемое значение в виде даты без необходимости указывать формат даты для синтаксического анализа.

        store:new Ext.data.JsonStore({
            url: pathContext + '/Subject.mvc/Notices',
            baseParams: { subjectId: this.subjectId },
            fields: [
               {name: 'Title'},
               {name: 'DateCreated', type: 'date' }
            ]
        }),

Возвращенный JSON выглядит следующим образом:

[{"Title":"Some title","DateCreated":new Date(1259175818323)}]

Нет никаких причин для преобразования в формат ISO 8601 и обратно, если вам это не нужно.

1
ответ дан 27 November 2019 в 06:02
поделиться

Это было найдено в другом сообщении на Stack Overflow:

var date = new Date(parseInt(jsonDate.substr(6))); 

Функция substr убирает часть "/Date(", а функция parseInt получает целое число и игнорирует ")/" в конце. Полученное число передается в конструктор Date.

29
ответ дан 27 November 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: