当using Newtonsoft.Json
,我可以通过将转换器添加到顶级SerializerSettings
或将其提供给转换调用来实现我所需要的 - 一切都运行良好。
我希望提取一些全局转换器,而不是在实际需要转换的相关位置以声明方式应用。
我知道以下技巧: -
[JsonConverter(typeof(Converters.StringEnumConverter))]
类型上输入X
级别[JsonConverter(typeof(Converters.StringEnumConverter))]
如果该成员实际上是X
的数组等我遇到的问题是我所使用的一些全局转换器在嵌套类型上运行,例如如果我有[JsonProperty(ItemConverterType=typeof(Converters.StringEnumConverter)]
类型的成员,我不能表达“如果你在处理这个字段时遇到一个X或者它的任何一个孩子,那么转换”是语义的,而是得到一个X
。
这样的“对于这棵树,还请使用这个转换器吗”机制存在吗?我想避免为我想要转换的任何东西定义顶级类型,然后使用Tuple<X[],Nullable<X>>
标记该类型来解决这个问题?
如果我理解正确并且根据官方文档,您可以直接应用转换器并使用自定义转换器按类型过滤:
Newtonsoft.Json.JsonSerializationException
资料来源:JsonConverter