我们需要为JsonConverter
和DateTime
编写自定义DateTime?
,以便尊重使用DisplayFormat
属性指定的日期格式。
[如果有人知道现有的转换器正是这样做的话 - >我们想知道它: - )]
我们从JsonConverter
派生了转换器,然而,似乎无法访问任何属性,因为我们无法访问要转换的属性 - 只能访问其类型和值。
我们有没有其他方式被忽视?如何从JsonConverter中访问属性?
答案 0 :(得分:1)
从我所看到的,似乎没有办法从转换器中访问被转换对象的上下文(父对象)。另一个答案(现已删除)声称您可以通过Context
上的JsonSerializer
属性,但这会返回StreamingContext
,其中不包含有关父对象的信息(其内部{在我的测试中,{1}}属性始终为null。
对于您的情况,可能的解决方案是在this answer中使用该想法的变体。换句话说,创建Context
的自定义衍生项,每个不同的日期格式对应一个。我猜测只需要少量的这些。然后,使用IsoDateTimeConverter
属性装饰DateTime
属性,根据所需的日期格式指定要用于每个属性的自定义日期转换器。
答案 1 :(得分:0)
You can put the parent object in the StreamingContext.Context which is a place holder for extra information in OnSerializing callback of the parent object. I suggest defining this context as a dictionary of string and object and with predefined keys. In the converter then you can get the stored additional information from Serializer.Context.