2013-02-19 5 views
0

Редактировать 2:json.net JsonConvert.DeserializeObjectAsync ISO 8601 Дата

Я создал приложение для Windows Phone 8 и включен Microsoft.WindowsAzure.MobileServices; с тем же классом, что и код нарушения ниже в исходном вопросе, я создал запись, которую json.net DID успешно десериализовал.

[{"id":1,"DataLoggerName":"Ben Walkin","Time":"2013-02-19T18:39:51.733Z", 
[{"id":1,"DataLoggerName":"JHANetDuino","Time":"2013-02-19T16:46:55.205K", 

Re чтение ISO 8601 Wikipedia article я теперь интерпретировать 'K' в качестве виновника. Допустимо только время Z Zulu. Смещения выражаются численно. «часовых пояса в ISO 8601 представлены в качестве местного времени (с указанием места неустановленным), как и UTC, или как смещение от UTC.»

Я попытаюсь опубликовать решение для клиента разместившей «K» .netmf с неподдерживаемой .dll, чтобы разрешить создание табличных данных в Azure.

Edit 1:

Я включил Json.NET в моем решении пошагово ошибки и нашел это:

Newtonsoft.Json.JsonReaderException был необработанным кодом пользователя
HResult = -2146233088 Сообщения = Не удалось преобразовать строку в DateTime: 2013-02-18T06: 35: 25.604K. Путь '[0] .Time', строка 1, позиция 74.

Оригинал Вопрос

У меня есть окна магазина приложение, которое работает с данными Json, что я построил с .php. Я недавно улучшал его работу с окнами Azure. Я «владею» кодом и могу исправить его, чтобы быть полезным другим и следовать «стандартам» с этой целью. Я пытаюсь стандартизировать мой Json и, в частности, DateTime (меня смущает).

Является ли это действующим ISO 8601 Дата? «Время»: «2013-02-18T06: 35: 25.604K» и не является ли это действительной датой ISO 8601? «Время»: «2013-02-11 16:25:54»

Допустимая дата имеет 'T' между данными и временем, у недействительного есть ''?

данных в от старого РАБОЧЕЙ .php коды

[{"Time":"2013-02-11 16:25:54","Temperature0":"74.38478","Temperature1":"57.142857142857146"},{"Time":"2013-02-11 16:26:54","Temperature0":"74.38478","Temperature1":"57.753357753357754"}, 

данных в результате нового Azure разбивая кода

[{"id":1,"DataLoggerName":"JHA NetDuino","Time":"2013-02-18T06:35:25.604K","Temperature0":82.78388278388276,"Temperature1":0}, 

Это старый рабочий код читает то, что мне кажется недействительным ISO 8601 в формате JSON поскольку нет даты «T» между датой и временем.

   var strJson = await GetJsonHistoricalTemperatureData.GetHistoricalTemperatureData(); 
     return await JsonConvert.DeserializeObjectAsync<ObservableCollection<HistoricalTemperatureData>>(strJson); 


     public class HistoricalTemperatureData 
{ 
    public int Id { get; set; } 
    public string DataLoggerName { get; set; } 
    public DateTime Time { get; set; } 
    public double Temperature0 { get; set; } 
    public double Temperature1 { get; set; } 
} 

Если я читаю Azure данных с тем же кодом, я получаю сообщение об ошибке исключения на Json.NET

A first chance exception of type 'Newtonsoft.Json.JsonReaderException' occurred in mscorlib.dll 

Из всего, что я читал, кажется, что приложение не должно было работать с исходными данными даты и должен с новыми данными Azure. Похоже, что данные Azure более корректны в соответствии с ISO 8601. Я хотел бы привести свой старый .php-код для создания этого (легко сделать) и исправить приложение для магазина Windows, чтобы правильно десериализовать Json.

ответ

0

Перечитав статью ISO 8601 Wikipedia, я теперь интерпретирую «K» как преступника. Допустимо только время Z Zulu. Смещения выражаются численно. «Часовые пояса в ISO 8601 представлены как местное время (с неопределенным местоположением), как UTC или как смещение от UTC».

Смежные вопросы