Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在JSON.NET中反序列化对象_C#_Json_Serialization_Asp.net Web Api - Fatal编程技术网

C# 在JSON.NET中反序列化对象

C# 在JSON.NET中反序列化对象,c#,json,serialization,asp.net-web-api,C#,Json,Serialization,Asp.net Web Api,我所拥有的: 包含businesslogic并与JSON一起工作的WebAPI服务 向WebAPI发送请求并等待响应的客户端 一个接口“IBusinesspartner”和从接口继承的两个对象:“Businesspartner”和“Potential” 我需要的是: 我需要反序列化一个JSON接口,该接口包含一些其他自定义对象。 这样地: IBusinesspartner public string Name { get; set; } public string Street { get; s

我所拥有的:

  • 包含businesslogic并与JSON一起工作的WebAPI服务
  • 向WebAPI发送请求并等待响应的客户端
  • 一个接口“IBusinesspartner”和从接口继承的两个对象:“Businesspartner”和“Potential”
  • 我需要的是:

    我需要反序列化一个JSON接口,该接口包含一些其他自定义对象。 这样地: IBusinesspartner

    public string Name { get; set; }
    public string Street { get; set; }
    public SalesDivision Division { get; set; }
    public IDictionary<SalesDivison, Money> TurnoverPerDivision { get; set; }
    
    公共字符串名称{get;set;}
    公共字符串Street{get;set;}
    公共销售部门部门{get;set;}
    公共IDictionary TurnOverpredivision{get;set;}
    
    我已经做了:

    我使用thread实现了一个自定义转换器,它似乎可以很好地反序列化作为WebAPI服务响应的JSON字符串,直到它需要反序列化字典。。然后我得到以下错误消息:

    无法将字符串“BL.Service.Models.SalesDivision”转换为字典键类型“data.model.SAP.SalesDivision”。创建一个TypeConverter,将字符串转换为键类型对象。路径“TurnoverPerSalesDivision.BL.Service.Models.SalesDivision”,第1行,位置17672

    问题是:


    是的,我知道错误消息告诉我该做什么,但我仍然不知道下一步要做什么。我应该为IBusinesspartner接口重新设计/扩展刚刚实现的转换器,还是为我的每个对象创建一个自己的转换器?这样的转换器是什么样子?有什么例子吗?我很高兴能得到任何帮助和信息。

    SalesDivision是否用DataContract和DataMember属性装饰?这些可能是正确进行反序列化所必需的,但现在它们不是。但要改变这一点并不是一个问题,而且IDictionary也可能是一个问题。用两个阵列(SalesDivision[],Money[])替换它,然后在另一端重新创建它,怎么样?(看起来很糟糕,我知道。)实际上我不想改变任何逻辑。我认为这应该是可能的,JSONConvertery添加了这些-