JSON.NET转换器CanConvert - 如何访问属性

时间:2013-09-18 10:25:20

标签: c# json json.net

我们需要为JsonConverterDateTime编写自定义DateTime?,以便尊重使用DisplayFormat属性指定的日期格式。

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

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

我们有没有其他方式被忽视?如何从JsonConverter中访问属性?

2 个答案:

答案 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.