我正在为项目使用Servicestack和Ormlite并与邮递员进行测试。
我用于时间戳的C#类型是DateTime,它可以正确处理往返MySql数据库的信息。当我在响应中返回值时,该值看起来正确,但是当在邮递员中检查响应或只是浏览至请求url时,我看到的值是
[
{
"id": 1,
"accountType": 1,
"name": "Mr J Smith",
"memberSince": "/Date(1539189581000-0000)/",
"phone": "8138138138",
"email": "jjj@jjj.com",
"emailVerified": false
}
]
我寄出的价值是
MemberSince = {10/10/2018 12:39:41 PM}
为什么会有差异?是其他格式吗?如何进行全局转换?
更新
我将其添加到初始化例程中,并且可以正常工作。这是最好的方法吗?
JsConfig<DateTime>.SerializeFn = time => new DateTime(time.Ticks, DateTimeKind.Utc).ToString("o");
JsConfig<DateTime?>.SerializeFn = time => time != null ? new DateTime(time.Value.Ticks, DateTimeKind.Utc).ToString("o") : null;
JsConfig.DateHandler = DateHandler.ISO8601;
答案 0 :(得分:1)
我建议您检查使用的序列化程序,它与邮递员无关,这是您从后端返回数据的方式。
例如:
return Json(
new DataSourceResult
{
Data = "testing"
});
当序列化器将此数据发送到ajax / javascript一侧的单词Data
时,我需要将其读为小写data
,因为序列化器会将第一个字母设置为小写。
因此,首先,请查看串行器通过电线发送的内容,并尝试在后端更改DateTime的格式。如我所见,序列化程序将使用所有DateTime并将其转换为该格式。尝试发送代替日期时间的字符串表示日期,并查看另一端收到的信息。应该是纯字符串。
希望这会有所帮助
答案 1 :(得分:1)
您可以将ServiceStack.Text配置为通过以下方式使用ISO8601日期格式:
JsConfig.Init(new Config {
DateHandler = DateHandler.ISO8601
});