通过Attributes指定的转换器等同于json.net中的全局转换器

问题描述 投票:8回答:1

using Newtonsoft.Json,我可以通过将转换器添加到顶级SerializerSettings或将其提供给转换调用来实现我所需要的 - 一切都运行良好。

我希望提取一些全局转换器,而不是在实际需要转换的相关位置以声明方式应用。

我知道以下技巧: -

  • 直接在[JsonConverter(typeof(Converters.StringEnumConverter))]类型上输入X级别
  • 会员级别的qazxsw poi会员是qazxsw poi类型
  • 项目级别[JsonConverter(typeof(Converters.StringEnumConverter))]如果该成员实际上是X的数组等

我遇到的问题是我所使用的一些全局转换器在嵌套类型上运行,例如如果我有[JsonProperty(ItemConverterType=typeof(Converters.StringEnumConverter)]类型的成员,我不能表达“如果你在处理这个字段时遇到一个X或者它的任何一个孩子,那么转换”是语义的,而是得到一个X

这样的“对于这棵树,还请使用这个转换器吗”机制存在吗?我想避免为我想要转换的任何东西定义顶级类型,然后使用Tuple<X[],Nullable<X>>标记该类型来解决这个问题?

.net json json.net converters jsonconverter
1个回答
1
投票

如果我理解正确并且根据官方文档,您可以直接应用转换器并使用自定义转换器按类型过滤:

Newtonsoft.Json.JsonSerializationException

资料来源:JsonConverter

© www.soinside.com 2019 - 2024. All rights reserved.