[英]JSON.NET unknown type deserialization
假设我有以下json字符串,其中某些属性名称有所不同(“ dataA”,“ dataB”),但是它包含相同的结构
{
"mainprop": "val",
"dataA": { "prop1":"val", "prop2":"val"}
}
和
{
"mainprop": "val",
"dataB": { "prop1":"val", "prop2":"val"}
}
我如何使用以下通用类将这些json反序列化为对象
Class Generic
{
string mainprop;
DataClass data;
}
Class DataClass
{
string prop1;
string prop2;
}
换句话说,如何根据属性名称处理反序列化。
您始终可以进行通用反序列化(到Dictionary<string, object>
),然后自己映射值,但是我怀疑这不是您想要的。
我能想到的唯一方法就是制作两个仅用于反序列化/序列化目的的虚拟对象。
public class GenericA : Generic {
public DataClass dataA { get { return data; } set { data = value; } }
}
public class GenericB : Generic {
public DataClass dataB { get { return data; } set { data = value; } }
}
Generic a = JsonConvert.DeserializeObject<GenericA>("JSON using dataA");
Generic b = JsonConvert.DeserializeObject<GenericB>("JSON using dataB");
我尚未测试此代码。
您可能需要使用[JsonIgnore]
来属性您的data
属性,以便可以序列化GenericA
和GenericB
而不必两次拥有相同的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.