我们应该如何在ASP.NET C#应用程序中解析特定的JSON日期格式?

时间:2013-08-29 14:33:54

标签: c# json date json.net

我们正在为应用程序中的某个模块使用第三方供应商 Web服务端点由第三方供应商提供。

对于其中一个处理发布评论的Web服务端点,

我们的ASP.NET C#Web应用程序将获取一些JSON数据。

我使用James Newton-King Json.NET处理JSON数据。

在我们从Web服务中收到的JSON数据中 第三方供应商,我们得到以下相关日期 随着时间的推移发表评论:

\"date_created\": 1375206707,\r\n 

因此,我创建了一个ASP.NET DataContract C#类 对应于我们收到的JSON数据。

此外,我在C#类中有以下DataMember 这将对应于与之相关的创建日期 发表评论:

[DataMember(Name = "date_created")]
public string CommentCreationDate { get; set; }

请就如何解析以下JSON日期格式提出建议

在ASP.NET C#世界中(可能还涉及James Newton-King Json.NET):

\"date_created\": 1375206707,\r\n 

3 个答案:

答案 0 :(得分:3)

您可以通过创建自定义转换器来实现。

string json = @"{""date_created"":1375206707}";

var obj = JsonConvert.DeserializeObject<TempClass>(json,new DateConverter());

public class TempClass
{
    public DateTime date_created;
}

public class DateConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(DateTime);
    }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return new DateTime(1970, 1, 1).AddSeconds((long)reader.Value);
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        throw new NotImplementedException();
    }
}

答案 1 :(得分:0)

@ I4V感谢您的帮助。

因为我已经使用James Newton-King Json.NET技术将创建日期放在一个名为CommentCreationDate的基于字符串的DataMember中,所以我包含以下C#代码来获取DateTime值。

CommentCreationUTDate = new DateTime(1970,1,1).AddSeconds(Int64.Parse(CommentCreationDate))。ToUniversalTime();

答案 2 :(得分:-1)

//(How to convert a Unix timestamp to DateTime and vice versa?) //“UTC不随季节的变化而变化,但当地时间或民用时间可能会发生变化 //如果时区管辖区域遵守夏令时(夏令时)。 //例如,UTC比当地时间早5个小时(即当天晚些时候) //冬天是美国东海岸,但是在那里观察到夏令时,提前4个小时。“

//以下内容需要reader.Value为Unix TimeStamp

        return (new DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(Convert.ToDouble(reader.Value)));