覆盖日期序列化的默认配置时,它在元数据页面的 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 重现问题的测试。