【发布时间】:2017-10-30 11:27:06
【问题描述】:
目前无法解决问题:无法将“RestSharp.JsonArray”类型的对象转换为“System.Collections.Generic.IDictionary`2[System.String,System.Object”类型的对象——我可以看到这个错误在这里,在响应本身中:
var response = client.Execute<ThirdPartySuggester>(request);
但我在这里得到的 NullReferenceExeption:
var name = response.Data.Name;
这是我的测试课:
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;
.....
我得到的响应包含以下数据:
[
{
"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; }
}
各位,我将不胜感激!
【问题讨论】:
-
我认为您没有显示出现此错误的代码。您的响应是一个数组,我没有看到您试图将其转换为字典的任何代码。您的代码似乎需要一个
ThirdPartySuggester,请发布 MCVE -
感谢@pstrjds 的评论,我刚刚编辑了我的帖子。是的,我想你是对的,因为我将 ThirdPartySuggester 写成一个单独的。如何正确的把它变成字典?
标签: c# deserialization restsharp