Как сериализовать "19.12.2013 12:00:00" в тип DateTime на C# с использованием DataContractJsonSerializer

Я в настоящее время использую DataContractJsonSerializer класс, но я не могу конвертировать даты, как 12/19/2013 12:00:00 AM на C# DateTime Объект.

Ошибка, которую я получаю, говорит:

Произошла ошибка при десериализации объекта типа Uptivity.achievement. Содержимое DateTime '12/19/2013 12:00:00 AM'не начинается с'Date('и заканчивается')', как требуется для JSON.

в:

    public static T DeserializeJSon<T>(string jsonString)
    {

        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(stream);
        return obj;
    }

Я пытался определить формат даты и времени следующим образом:

     public static T DeserializeJSon<T>(string jsonString)
     {

       var settings = new DataContractJsonSerializerSettings
        {
            DateTimeFormat = new System.Runtime.Serialization.DateTimeFormat("G")
        };

        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T),settings);
        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
        T obj = (T)ser.ReadObject(stream);
        return obj;
      }

Но сейчас я получаю:

Произошла ошибка при десериализации объекта типа Uptivity.achievement. Строка не была распознана как действительный DateTime.

Также это 12/19/2013 12:00:00 AM Формат, такой как Date, - это тот, который предоставляет провайдер json.

Есть идеи?

1 ответ

После некоторого устранения неполадок я придумаю это как свое решение:

использование System.Web.Script.Serialization;

    public static T DeserializeJSon<T>(string jsonString)
    {

        JavaScriptSerializer ser = new JavaScriptSerializer();
        T obj = ser.Deserialize<T>(jsonString);

        return obj;
    }

И теперь все идет гладко.

Другие вопросы по тегам