无法将Json反序列化为同一个合同类

时间:2016-08-02 12:17:13

标签: c# json.net json-deserialization

我有以下类结构。如果我使用api使用的相同的契约集合(汇编与所有数据类和其他东西),我无法在我的应用程序中反序列化它。

但我需要删除该程序集的依赖项。所以我创建了另一个具有相同命名空间和契约的程序集。

示例:我有很多零件,我可以用这些零件或摩托车装车。

public class Car
{
 public string Name {get; set;}
 public Dictionary<string,Part> SpareParts {get; set;}
}

public class Part
{
public string PartName {get; set;}
public object Value {get;set;}
public string Type {get;set}
}

现在,我有一个通用查询请求和响应

public class QueryRequest
{
  //Stuff.. Request works fine.. i get a response
}

public class QueryResponse
{
   public QueryResult[] Result;
}


public classs QueryResult
{
//Other details like entity name n stuff for car or motorcycle etc.
 public Part[] Parts;
}

请记住Part Class with Value字段,其中包含List 它就像这样

public class abstract Spoke
{
}

public class Spoke1 : Spoke
{
}

public class Spoke2 : Spoke
{
}

在我的回复中,我得到了这个奇怪的序列化字符串

"Value": {
            "$type": "System.Collections.Generic.List`1[[namespace.Spoke, namespace]], mscorlib",
            "$values": [
              {
                "$type": "namespace.spoke2, namespace",
               //Other Properties of spoke2
              }]
        }

编辑:我收到QueryResponse格式的数据,其中包含QueryResult n部分

我正在使用Newtonsoft.Json,任何想法如何将其反序列化为我的namespace2.Spoke 我将整个合同复制到另一个程序集中。 我尝试更改名称空间与响应一样,但不起作用。

请提供任何帮助建议。

0 个答案:

没有答案