繁体   English   中英

JSON.NET未知类型反序列化

[英]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属性,以便可以序列化GenericAGenericB而不必两次拥有相同的属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM