0

我们需要JsonConverterDateTimeand编写一个自定义,DateTime?以便尊重DisplayFormat属性指定的日期格式。

[如果有人知道现有的转换器正在这样做->我们想知道它:-)]

我们从 中派生了转换器JsonConverter,但是,似乎无法访问任何属性,因为我们无法访问正在转换的属性 - 只能访问其类型和值。

还有其他我们忽略的方法吗?如何从 JsonConverter 中访问属性?

4

2 回答 2

1

据我所知,似乎没有一种方法可以从转换器内部访问正在转换的对象的上下文(父对象)。另一个答案(现已删除)声称您可以通过 上的Context属性JsonSerializer,但这会返回StreamingContext不包含有关父对象的信息的 a (它的内部Context属性在我的测试中始终为 null)。

对于您的情况,可能的解决方案是在此答案中使用该想法的变体。换句话说,IsoDateTimeConverter为您需要的每种不同的日期格式创建自定义派生词。我猜只有少数需要这些。然后,使用属性装饰您DateTime[JsonConverter]属性,根据所需的日期格式为每个属性指定要使用的自定义日期转换器。

于 2013-09-20T02:49:27.410 回答
0

您可以将父对象放在 StreamingContext.Context 中,它是父对象的OnSerializing 回调中额外信息的占位符。我建议将此上下文定义为字符串和对象的字典以及预定义的键。在转换器中,您可以从 Serializer.Context 获取存储的附加信息。

于 2018-02-26T17:54:14.857 回答