【发布时间】:2018-03-05 06:11:33
【问题描述】:
错误
Newtonsoft.Json.JsonSerializationException: '无法反序列化 当前 JSON 对象(例如 {"name":"value"})转换为类型 'System.Collections.Generic.List`1[RechargePortal.Models.ProviderOperator]' 因为该类型需要一个 JSON 数组(例如 [1,2,3])来反序列化 正确。要修复此错误,请将 JSON 更改为 JSON 数组 (例如 [1,2,3])或更改反序列化类型,使其成为正常的 .NET 类型(例如,不是像整数这样的原始类型,也不是集合 可以从 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 结果
{
"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; }
}
【问题讨论】:
-
你的 json 不是一个列表,它是一个包含列表的对象
-
您可以使用一些在线工具来确保正确地将 JSON 转换为 C#:json2csharp.com