我正在使用Servicestack和Ormlite进行我的项目,并与postman一起进行测试。 我用于时间戳的 C# 类型是 DateTime,它正确地处理进出 MySql 数据库的信息。 当我在响应中返回值时,该值看起来是正确的,但是当在 Postman 中检查响应或只是浏览到请求 url 时,我看到的值是
[
{
"id": 1,
"accountType": 1,
"name": "Mr J Smith",
"memberSince": "/Date(1539189581000-0000)/",
"phone": "8138138138",
"email": "jjj@jjj.com",
"emailVerified": false
}
]
我发送的值是 成员自 = {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;
我建议您检查正在使用的序列化程序,它与邮递员无关,是您从后端返回数据的方式。
例如:
return Json(
new DataSourceResult
{
Data = "testing"
});
当序列化程序在 ajax/javascript 端发送此数据时,我需要将其Data
为小写data
,因为序列化程序将第一个字母设置为小写。 因此,首先,查看序列化程序通过网络发送的内容,并尝试在后端更改日期时间的格式。正如我所看到的,序列化程序获取所有日期时间并以该格式转换它们。尝试发送日期的字符串表示形式而不是日期时间,并查看您在另一端收到的内容。应该是普通字符串。 希望这有帮助
您可以将 ServiceStack.Text 配置为将 ISO8601 Date 格式与以下内容一起使用:
JsConfig.Init(new Config {
DateHandler = DateHandler.ISO8601
});