错误
Newtonsoft.Json.JsonSerializationException:'无法反序列化 当前的JSON对象(例如{“name”:“value”})到类型中 'System.Collections.Generic.List`1 [RechargePortal.Models.ProviderOperator]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确。要修复此错误,请将JSON更改为JSON数组 (例如[1,2,3])或更改反序列化类型以使其正常 .NET类型(例如,不是整数的基本类型,不是集合 类似于数组或List的类型,可以从JSON反序列化 宾语。 JsonObjectAttribute也可以添加到类型中以强制它 从JSON对象反序列化。路径'提供者',第1行,位置 13'。
List<ProviderOperator> GetProvideOperator(string service)
{
string json = new System.Net.WebClient().DownloadString("URL");
List<ProviderOperator> ob = new List<ProviderOperator>();
ob = JsonConvert.DeserializeObject<List<ProviderOperator>>(json);
ob = ob.Where(x => x.Service.Equals(service)).ToList();
return ob;
}
JSON RESULT
{
"providers":[
{
"provider_id":0,
"provider_name":"PAY2ALL",
"provider_code":"PAY2ALL",
"service_id":10,
"service":"Pay2All Cash",
"provider_image":"",
"status":"Success"
},
{
"provider_id":1,
"provider_name":"AIRTEL",
"provider_code":"A",
"service_id":1,
"service":"Recharge",
"provider_image":"provider_icons\/airtel.png",
"status":"Success"
},
{
"provider_id":2,
"provider_name":"VODAFONE",
"provider_code":"V",
"service_id":1,
"service":"Recharge",
"provider_image":"provider_icons\/vodafone.png",
"status":"Success"
}
]
}
模特
public class ProviderOperator
{
public string Provider_id { get; set; }
public string Provider_name { get; set; }
public string Provider_code { get; set; }
public string Service { get; set; }
public string Provider_image { get; set; }
public string Status { get; set; }
}
答案 0 :(得分:2)
您应该尝试以下课程:
public class ProviderOperator
{
public List<Provider> providers { get; set; }
}
public class Provider
{
public int provider_id { get; set; }
public string provider_name { get; set; }
public string provider_code { get; set; }
public int service_id { get; set; }
public string service { get; set; }
public string provider_image { get; set; }
public string status { get; set; }
}
var ob = JsonConvert.DeserializeObject<ProviderOperator>(json);
<强>输出:强>
答案 1 :(得分:0)
您的Json结果采用不同的格式和您正在使用的类结构
解析json的格式不同。
您需要创建两个单独的类,如下所示:
public class ProviderOperator
{
public List<ProviderInfo> providers { get; set; }
}
public class ProviderInfo
{
public int provider_id { get; set; }
public string provider_name { get; set; }
public string provider_code { get; set; }
public int service_id { get; set; }
public string service { get; set; }
public string provider_image { get; set; }
public string status { get; set; }
}
var result = JsonConvert.DeserializeObject<ProvderOperator>(json);