我想要拥有 type 的财产object
这可以是string
or Template
type.
是否可以告诉 Json.NET 将某些内容解析为几种指定类型之一?
class MyClass
{
public object Template { get; set; }
}
where Template = "TemplateName"
{
"Template": "TemplateName"
}
or Template = new Template()
{
"Template": { "Name": "OtherTamplate", ... }
}
UPDATE:
我尝试遵循@krillgar'的建议并创建一个自定义JsonConverter
但不幸的是CanConvert
方法仅接收目标类型,在本例中object
。这些信息不足以判断它是否可以反序列化(如果我有其他object
特性)。我想我需要它成为Template
毕竟或者创建一个派生类型,例如TemplateReference
或者其他的东西:
class myconverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
// objectType = typeof(object)
throw new NotImplementedException();
}
}
Configuration = JsonConvert.DeserializeObject<MyClass>(text, new myconverter());
免责声明
这个问题曾经作为重复项被关闭如何使用 Json.NET 反序列化可以是两种不同数据类型的 JSON 属性。因为在写我的问题时,我不知道已经有一个类似的问题,我想澄清它们之间的区别,以防止它将来被关闭:
另一个问题是关于如何将不同的值反序列化为concrete类型,而我的是将不同的值反序列化为object。乍一看似乎是相同的,因为在这两个示例中,只有属性的类型不同,但它对整体应用程序设计有巨大的影响。对我来说很重要的是我可以使用object存储不同的专门类型,而不是一种具有多种职责的类型。