显示错误的RestSharp无法创建接口实例必须手动反序列化

Tim*_*her 8 c# json restsharp deserialization asp.net-web-api

我有RestSharp(类似于HttpClient)从Web Api方法调用和返回数据

我收到了这个错误 {"Cannot create an instance of an interface."}

我的代码看起来像这样:

public List<Interest> GetInterests()
{
    var request = new RestRequest(apiPath + "GetInterests", Method.GET) { RequestFormat = DataFormat.Json };
    var response = Client.Execute<List<Interest>>(request);
    return response.Data;
}
Run Code Online (Sandbox Code Playgroud)

我的回答.内容如下所示.

现在问题似乎是DATA在响应对象的Content属性中作为JSON存在.我可以从那里手动反序列化它.但是之前是自动将其反序列化为Data属性,我不确定现在发生了什么.

如果我手动反序列化json,它可以工作 - 但为什么我需要这样做?

List<Interest> results = JsonConvert.DeserializeObject<List<Interest>>(response.Content); 
Run Code Online (Sandbox Code Playgroud)

响应:

"StatusCode: OK, Content-Type: application/json; charset=utf-8, Content-Length: 5597)"

JSON代码返回

[
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":1,
      "InterestName":"Nursing",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":2,
      "InterestName":"Creating/Supporting Networks of Community Partners",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":3,
      "InterestName":"Epidemiology",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":4,
      "InterestName":"Maternal",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":5,
      "InterestName":"Healthcare for the Homeless",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":6,
      "InterestName":"HIV/AIDS, STD",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":7,
      "InterestName":"Nutrition",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":8,
      "InterestName":"Physical Activity",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":9,
      "InterestName":"Oral Health",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":10,
      "InterestName":"Public Health Communication",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":11,
      "InterestName":"Emergency Preparedness and Response",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":12,
      "InterestName":"Public Health Policy",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":13,
      "InterestName":"Tuberculosis",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":14,
      "InterestName":"Teen Pregnancy Prevention",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":15,
      "InterestName":"Vital Registration",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":16,
      "InterestName":"Chronic Disease",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":17,
      "InterestName":"Finance & Management",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":18,
      "InterestName":"Quality Improvement",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":19,
      "InterestName":"Healthy Community Design",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":20,
      "InterestName":"Behavioral Health and Healthcare Integration",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":21,
      "InterestName":"Rx Drug Misuse and Abuse",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":22,
      "InterestName":"Injury Prevention",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":23,
      "InterestName":"School Health",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":24,
      "InterestName":"Worksite Wellness",
      "AddDate":"2016-07-01T17:03:21.61",
      "ModDate":"2016-07-01T17:03:21.64",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   },
   {
      "InternInterests":[

      ],
      "OfficeInterests":[

      ],
      "InterestId":25,
      "InterestName":"Access to Healthy Foods",
      "AddDate":"2016-08-03T08:10:45.4",
      "ModDate":"2016-08-03T08:10:45.4",
      "AddUser":"System",
      "ModUser":"System",
      "IsDeleted":false
   }
]
Run Code Online (Sandbox Code Playgroud)

如果我手动反序列化json,它可以工作 - 但为什么我需要这样做?

List<Interest> results = JsonConvert.DeserializeObject<List<Interest>>(response.Content); 
Run Code Online (Sandbox Code Playgroud)

小智 13

我遇到了同样的问题.在我的例子中,我创建了一个自定义对象(在您的情况下是兴趣对象),它有一个ICollection对象列表.因此,我删除了ICollection并将其作为对象列表.检查Interest是否具有任何与Interface相关的属性,并尝试将make作为具体对象属性.

检查InternInterests和OfficeInterests属性,它可能正在使用任何类型的接口集合.

  • 与IEnumerable相同,或者在我的情况下,与F#中的seq相似 - 似乎JSON.net序列化程序更宽容,并且与RestSharp序列化程序相比,可以使用这些类型 (2认同)