2017-10-30 3 views
-1

これまでの問題を修正できません:' RestSharp.JsonArray 'タイプのオブジェクトをキャストして' System.Collections.Generic.IDictionary`2 [可能System.String、System.Objectの - このエラーは私が応答自体は、ここで見ることができます。RestSharp:タイプ 'RestSharp.JsonArray'のオブジェクトを 'System.Collections.Generic.IDictionary`にキャストできません

var response = client.Execute<ThirdPartySuggester>(request); 

が、私はここに来るNullReferenceExeption:

var name = response.Data.Name; 

これは私のテストクラスです:

ここで
[ 
    { 
    "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" 
    } 
] 

が、私は逆シリアル化しようとしているものの実装クラスである:私はあなたから任意の助けをいただければ幸いです

public class ThirdPartySuggester 
{ 
    public string Name { get; set; } 
    public string Manufacturer { get; set; } 
    public string DeviceType { get; set; } 
    public string SearchKey { get; set; } 
} 

、みんな

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; 

..... 

私が得る応答は、このデータが含まれています!あなたがThirdPartySuggesterの配列を返して取得しているので、あなたがリストを指定する必要が

+0

を使用し、私はあなたがいるとは思いませんこのエラーが発生しているコードを示します。あなたの応答は配列であり、辞書に変換しようとしているコードは表示されません。あなたのコードは単一の 'ThirdPartySuggester'を期待しているようですが、[MCVE](https://stackoverflow.com/help/mcve) – pstrjds

+0

を投稿してください。@pstrjdsありがとうございました。私の投稿を編集しました。 はい、あなたは私がThirdPartySuggesterを単一のものとして書いたのであなたが正しいと思います。 正しい方法で辞書に変換するにはどうすればいいですか? – SerjK

答えて

1

var response = client.Execute<List<ThirdPartySuggester>>(request); 

そして、それらにアクセスするために、ループ

foreach (ThirdPartySuggester item in response.Data) 
{ 
    //get each items properties 
} 
関連する問題