在C#中将Date转换为JSON对象

时间:2014-01-11 01:27:38

标签: c# json datetime

我创建了一个带有静态方法的C#类,该方法将任何对象转换为JSON对象。我已经使用JavaScriptSerializar了。这是我的代码

public class JS
{
    public static string GetJSON(object obj)
    {
        JavaScriptSerializer js = new JavaScriptSerializer();
        string retJSON = js.Serialize(obj);
        return retJSON;
    }
}

我还有另一个只有两个属性Date& Remark。这是我的班级

public class RemarkData
{
    public DateTime Date { set; get; }
    public string Remark { set; get; }
}

现在,我正在使用以下代码

RemarkData类的对象转换为JSON
JS.GetJSON(objRemarkData);

这是我得到的输出

  

{“日期”:“/日期(1389403352042)/”,“备注”:“Sme备注”}

这是我需要的输出

  

{“Date”:1389403352042,“备注”:“一些备注”}

我应该怎么做才能获得那种输出?有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

double ticks = Math.Floor(objRemarkData.Date.ToUniversalTime() 
        .Subtract(new DateTime(1970, 1, 1))      
        .TotalMilliseconds); 
var newob = new { Date =ticks, Remark = objRemarkData.Remark};
JS.GetJSON(newob);

答案 1 :(得分:1)

你可以尝试JSON.NET,它将Date序列化为ISO字符串。

public class JS
{
    public static string GetJSON(object obj)
    {
        string retJSON = JsonConvert.SerializeObject(obj);
        return retJSON;
    }
}

实际上,你可以直接使用它,不需要在另一个函数中包装。

这也是asp.net web api序列化日期对象的方式。有关ISO字符串是一个不错的选择的更多信息,请查看此链接http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx

答案 2 :(得分:0)

这个长数字是"自纪元以来的毫秒数#34;我们可以使用以下代码段中的说明将此转换为普通的javascript日期,因此发布Converting .NET DateTime to JSON

var d = new Date();
d.setTime(1245398693390);
document.write(d);

还可以使用http://blog.stevenlevithan.com/archives/date-time-format中的一个很好的库和以下代码段。

var newDate = dateFormat(jsonDate, "dd/mm/yyyy h:MM TT");