RestSharp:无法将类型为“ RestSharp.JsonArray”的对象转换为类型为“ System.Collections.Generic.IDictionary”的对象

Ser*_*rjK 1 c# restsharp deserialization

到目前为止无法解决问题:无法将类型为'RestSharp.JsonArray'的对象转换为类型为'System.Collections.Generic.IDictionary`2 [System.String,System.Object-我在这里可以在响应本身:

var response = client.Execute<ThirdPartySuggester>(request);
Run Code Online (Sandbox Code Playgroud)

但是我得到的NullReferenceExeption在这里:

var name = response.Data.Name;
Run Code Online (Sandbox Code Playgroud)

这是我的测试课:

    public class Class1
    {
        [Theory]
        [InlineData("apple", "en-us")]
        public void SearchTest(string searchPhrase, string language)
        {
            var client = new RestClient("https://test_site/api");
            var request = new RestRequest("/thirdparty/suggester?searchPhrase={search_key}&marketLocale={language_id}", Method.GET);
            request
                .AddUrlSegment("search_key", searchPhrase)
                .AddUrlSegment("language_id", language);
            var response = client.Execute<ThirdPartySuggester>(request);

            var name = response.Data.Name;
            var manufacturer = response.Data.Manufacturer;
            var deviceType = response.Data.DeviceType;
            var searchKey = response.Data.SearchKey;

.....
Run Code Online (Sandbox Code Playgroud)

我得到的响应包含以下数据:

[
  {
    "name": "iPhone 7 Plus",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_iphone_7_plus"
  },
  {
    "name": "iPhone 4s",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_iphone_4s"
  },
  {
    "name": "iPhone 6",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_iphone_6"
  },
  {
    "name": "iPod Touch 8th Generation",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_ipod_touch_8th_generation"
  },
  {
    "name": "iPhone 7",
    "manufacturer": "Apple",
    "deviceType": "smartphone_tablet",
    "searchKey": "apple_iphone_7"
  }
] 
Run Code Online (Sandbox Code Playgroud)

这是我要反序列化的实现类:

public class ThirdPartySuggester
{
    public string Name { get; set; }
    public string Manufacturer { get; set; }
    public string DeviceType { get; set; }
    public string SearchKey { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

伙计们,我将不胜感激!

Riv*_*Riv 6

您将获得返回的ThirdPartySuggester数组,因此需要指定一个List:

var response = client.Execute<List<ThirdPartySuggester>>(request);
Run Code Online (Sandbox Code Playgroud)

然后访问它们,使用循环

foreach (ThirdPartySuggester item in response.Data)
{
  //get each items properties
}
Run Code Online (Sandbox Code Playgroud)