C# 将JSON结果转换为列表<&燃气轮机;

C# 将JSON结果转换为列表<&燃气轮机;,c#,asp.net,C#,Asp.net,错误 Newtonsoft.Json.JsonSerializationException:'无法反序列化 将当前JSON对象(例如{“name”:“value”})转换为类型 'System.Collections.Generic.List'1[RechargePortal.Models.ProviderOperator]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确地要修复此错误,请将JSON更改为JSON数组 (例如[1,2,3])或更改反序列化类型,使其成为正常

错误

Newtonsoft.Json.JsonSerializationException:'无法反序列化 将当前JSON对象(例如{“name”:“value”})转换为类型 'System.Collections.Generic.List'1[RechargePortal.Models.ProviderOperator]' 因为该类型需要一个JSON数组(例如[1,2,3])来反序列化 正确地要修复此错误,请将JSON更改为JSON数组 (例如[1,2,3])或更改反序列化类型,使其成为正常类型 .NET类型(例如,不是integer之类的基元类型,也不是集合 可以从JSON反序列化的类型(如数组或列表) 对象还可以将JsonObjectAttribute添加到类型以强制它 从JSON对象反序列化。路径“提供者”,第1行,位置 13.'

模型


您应该尝试以下课程:

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);
公共类ProviderOperator
{
公共列表提供程序{get;set;}
}
公共类提供者
{
公共int提供程序_id{get;set;}
公共字符串提供程序_name{get;set;}
公共字符串提供程序\u代码{get;set;}
公共int服务_id{get;set;}
公共字符串服务{get;set;}
公共字符串提供程序_映像{get;set;}
公共字符串状态{get;set;}
}
var ob=JsonConvert.DeserializeObject(json);
输出:


Json结果的格式和所使用的类结构不同 解析json的格式不同。 您需要创建两个独立的类,如下所示

阶级结构
公共类ProviderOperator
{
公共列表提供程序{get;set;}
}
公共类ProviderInfo
{
公共int提供程序_id{get;set;}
公共字符串提供程序_name{get;set;}
公共字符串提供程序\u代码{get;set;}
公共int服务_id{get;set;}
公共字符串服务{get;set;}
公共字符串提供程序_映像{get;set;}
公共字符串状态{get;set;}
}
解析响应
var result=JsonConvert.DeserializeObject(json);

您的json不是一个列表,而是一个包含列表的对象。您可以使用一些在线工具来确保将json正确地输入到C中:
{
   "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; } 
}
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);
 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);