【发布时间】:2021-11-01 17:12:27
【问题描述】:
在序列化类中的属性时,是否可以指定我总是需要 json 对象中的类型信息? (最好使用 Newtonsoft)。 我在想这样的事情:
public abstract class Value {...}
public class BigValue : Value {...}
public class SmallValue : Value {...}
public class ValueContainer
{
[JsonSetting(TypenameHandling = TypenameHandling.All)] // <--- Something like this?
public Value TheValue { get; set; }
}
我知道我可以在使用自定义转换器进行解析时指定此行为。 但是我希望每次序列化这种类型的对象时都包含类型信息,而不必手动指定要使用的序列化选项。
【问题讨论】:
-
是的,使用custom converter
-
是的,这是一个解决方案,但是每次我必须序列化
ValueContainer对象时,我都必须再次手动指定要使用此转换器。有没有办法指定它,然后不必再次处理? -
@SørenHN 与指定
TypeNameHandling相同 - 使用JsonPropertyAttribute。 -
这很大程度上取决于您如何使用 Json.Net。您通常可以在 web api 之类的东西中指定默认转换器。但你实际上并没有具体说明你如何使用 Json.Net,所以我无法回答这个问题