我创建了一个带有静态方法的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,“备注”:“一些备注”}
我应该怎么做才能获得那种输出?有什么帮助吗?
答案 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");