Graeme_Grant
Приведенный выше код выглядит слишком сложным. Работа с JSON не должна быть такой уж сложной.
Чтобы декодировать дату, я предполагаю, что ваша информация выше, что ваши необработанные данные JSON выглядят примерно так:
{ "birthday":"2012-03-01T08:00:00" }
Это известный формат для
DataContractJsonSerializer
Для декодирования вы бы использовали что-то вроде этого класса:
[DataContract]
public class Example
{
[DataMember(Name="birthday")]
public DateTime Birthday { get; set; }
}
Вышеприведенный класс был сгенерирован с помощью
JsonUtils[
^] веб-сайт с вышеуказанными данными JSON.
Чтобы увидеть это в действии, я бы использовал это
Класс Помощи[
^]. Он использует
Json.Net[
^]:
using Newtonsoft.Json;
using System.Collections.Generic;
namespace Support.CSharp
{
public static class JsonHelper
{
public static string FromClass<T>(T data, bool isEmptyToNull = false,
JsonSerializerSettings jsonSettings = null)
{
string response = string.Empty;
if (!EqualityComparer<T>.Default.Equals(data, default(T)))
response = JsonConvert.SerializeObject(data, jsonSettings);
return isEmptyToNull ? (response == "{}" ? "null" : response) : response;
}
public static T ToClass<T>(string data,
JsonSerializerSettings jsonSettings = null)
{
var response = default(T);
if (!string.IsNullOrEmpty(data))
response = jsonSettings == null
? JsonConvert.DeserializeObject<T>(data)
: JsonConvert.DeserializeObject<T>(data, jsonSettings);
return response;
}
}
}
И использовать:
var rawJson = "{ \"birthday\":\"2012-03-01T08:00:00\" }";
var result = JsonHelper.ToClass<Example>(rawJson);
То
Работа с JSON в C# и VB[
^] статья содержит гораздо больше деталей (с загружаемым полностью рабочим кодом) для работы с JSON, которые вы должны найти полезными. :)