覆盖日期序列化的默认配置时,它在元数据页面的 JSON 示例中丢失
When overriding default configuration for Date Serialization, it becomes missing in the JSON example in metadata pages
我正在尝试使用以下代码覆盖默认的 DateTime 序列化:
JsConfig<DateTime>.SerializeFn = d =>
{
return d.ToString("o") + "Z";
};
JsConfig<DateTime>.RawSerializeFn = d =>
{
return d.ToString("o") + "Z";
};
(不确定 SerializeFn 和 RawSerializeFn 之间的区别,所以我尝试了两者以确保......我也尝试实现 DeserializeFn 以防它们都需要被覆盖,但看到了一些结果)
无论如何...每次我尝试此操作时,我们 DTO 中的任何日期成员都会在元数据页面上的示例 request/response JSON 中丢失。 (尽管日期成员仍显示在“参数”部分中)。
我正在使用 SS v4.0.40.0
PS:我后来意识到我的整个目标追加 "Z" 到所有 DateTimes 可以用这个配置来完成:
JsConfig.DateHandler = DateHandler.ISO8601;
JsConfig.AssumeUtc = true;
JsConfig.AppendUtcOffset = false;
但我仍然想提交此错误 - 谢谢!
无法单独更改 DateTime
序列化,如果您接管序列化为不受支持的自定义格式,您还需要使用适当的 RawDeserializeFn/DeserializeFn
配置处理反序列化。
您还可以通过注册 ParseError 回调来处理未知 DateTime
格式的解析,即:
DateTimeSerializer.OnParseErrorFn = (dateTimeStr, ex) => //DateTime;
如果您想提出任何 ServiceStack 库的问题,请升级到最新版本的 ServiceStack 以确保它仍然是一个问题,如果是,请将其与示例一起提交给 github.com/ServiceStack/Issues code/failing 重现问题的测试。
我正在尝试使用以下代码覆盖默认的 DateTime 序列化:
JsConfig<DateTime>.SerializeFn = d =>
{
return d.ToString("o") + "Z";
};
JsConfig<DateTime>.RawSerializeFn = d =>
{
return d.ToString("o") + "Z";
};
(不确定 SerializeFn 和 RawSerializeFn 之间的区别,所以我尝试了两者以确保......我也尝试实现 DeserializeFn 以防它们都需要被覆盖,但看到了一些结果)
无论如何...每次我尝试此操作时,我们 DTO 中的任何日期成员都会在元数据页面上的示例 request/response JSON 中丢失。 (尽管日期成员仍显示在“参数”部分中)。
我正在使用 SS v4.0.40.0
PS:我后来意识到我的整个目标追加 "Z" 到所有 DateTimes 可以用这个配置来完成:
JsConfig.DateHandler = DateHandler.ISO8601;
JsConfig.AssumeUtc = true;
JsConfig.AppendUtcOffset = false;
但我仍然想提交此错误 - 谢谢!
无法单独更改 DateTime
序列化,如果您接管序列化为不受支持的自定义格式,您还需要使用适当的 RawDeserializeFn/DeserializeFn
配置处理反序列化。
您还可以通过注册 ParseError 回调来处理未知 DateTime
格式的解析,即:
DateTimeSerializer.OnParseErrorFn = (dateTimeStr, ex) => //DateTime;
如果您想提出任何 ServiceStack 库的问题,请升级到最新版本的 ServiceStack 以确保它仍然是一个问题,如果是,请将其与示例一起提交给 github.com/ServiceStack/Issues code/failing 重现问题的测试。