Как сериализовать "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;
}
И теперь все идет гладко.