C#API无法获取动态值来填充列表

C#API无法获取动态值来填充列表,c#,json,api,c#-4.0,json.net,C#,Json,Api,C# 4.0,Json.net,这个程序使用API从数据库获取信息。JSON文件进入并填充内容。然后,内容填充动态“holder”,但是当我将holder分配给“list”时,数据不会填充列表。我不明白我做错了什么。任何帮助都将不胜感激 public class Rootobject { //Employer and Carrier information public string Employer { get; set; } public string Ph

这个程序使用API从数据库获取信息。JSON文件进入并填充内容。然后,内容填充动态“holder”,但是当我将holder分配给“list”时,数据不会填充列表。我不明白我做错了什么。任何帮助都将不胜感激

public class Rootobject
        {
        //Employer and Carrier information 
        public string Employer { get; set; }
        public string Phone { get; set; }
        public string InsUnder { get; set; }
        public string Carrier { get; set; }
        public string CarrierPh { get; set; }
        public string Group { get; set; }
        public string MailTo { get; set; }
        public string MailTo2 { get; set; }  //place holder
        public string MailTo3 { get; set; }
        public string EClaims { get; set; }
        public string FAXClaims { get; set; }
        public string DMOOption { get; set; }

    public class iapVm
    {
        public List<Rootobject> data { get; set; }
    }

    public static iapVm GetList(string iapNumber)
    {

        //Response object
        iapVm list = new iapVm();

        List<Rootobject> lstRootobject = new List<Rootobject>();

        //      //Create client object for request
        var client = new RestClient("http://myurls/json/"); /// call url

        var request = new RestRequest(Method.GET);

        //      //Add parameter
        request.AddParameter("Number", Number);

        //      //Create response object
        IRestResponse response = client.Execute(request);

        var content = response.Content;

        //      //Convert string to json

        dynamic holder = Newtonsoft.Json.JsonConvert.DeserializeObject(content);



        holder = list;

        list.data = lstRootobject;

        return list; 
}
公共类根对象
{
//雇主和承运人信息
公共字符串{get;set;}
公用字符串电话{get;set;}
{get;set;}下的公共字符串
公共字符串载体{get;set;}
公共字符串载体ph{get;set;}
公共字符串组{get;set;}
公共字符串MailTo{get;set;}
公共字符串MailTo2{get;set;}//占位符
公共字符串MailTo3{get;set;}
公共字符串{get;set;}
公共字符串{get;set;}
公共字符串DMOOption{get;set;}
公共类iapVm
{
公共列表数据{get;set;}
}
公共静态iapVm GetList(字符串iapNumber)
{
//响应对象
iapVm列表=新的iapVm();
List lstRootobject=新列表();
////为请求创建客户端对象
var client=新的RestClient(“http://myurls/json/“”;///调用url
var请求=新的重新请求(Method.GET);
////添加参数
请求。添加参数(“编号”,编号);
////创建响应对象
IRestResponse response=client.Execute(请求);
var content=response.content;
////将字符串转换为json
dynamic holder=Newtonsoft.Json.JsonConvert.DeserializeObject(内容);
持有人=名单;
list.data=lstRootobject;
退货清单;
}

我使用您提供的示例Json数据做了一个快速测试,通过将响应内容直接反序列化到
列表中,它似乎可以正常工作

我的测试是这样的:(我删掉了所有的web调用内容,因为我无法测试它,我们知道你正在恢复内容。)

公共类根对象
{
//雇主和承运人信息
公共字符串{get;set;}
公用字符串电话{get;set;}
{get;set;}下的公共字符串
公共字符串载体{get;set;}
公共字符串载体ph{get;set;}
公共字符串组{get;set;}
公共字符串MailTo{get;set;}
公共字符串MailTo2{get;set;}//占位符
公共字符串MailTo3{get;set;}
公共字符串{get;set;}
公共字符串{get;set;}
公共字符串DMOOption{get;set;}
}
公共类iapVm
{
公共列表数据{get;set;}
}
公共班级1
{
公共iapVm测试反序列化gValidResponseContent()
{
//响应对象
iapVm列表=新的iapVm();
字符串内容=“[{\”\u id\”:“asdf\”,“雇主\”:“1800食品和酒吧(进度计划)”,“EMPNAMERXXX\”:“(333)-111-2222:(800)-234-2344\”,“InsUnder\”:“asdf asdf\”,“Dmoption\”:“No\”,“Medical\:“asdf(800)-234-2344集团”;“23443\,“DateXXX\”:“May\”,“Carrier\”,“Cigna\”‌​CarrierPh\“:\”(222)-‌​234-234234\“,\”传真‌​ms\“:“不接受”、“计划”:“自费”、“集团”:“信诺(800)-234-2344集团”;“集团编号”:“2343”、“集团编号”:“2343”、“EClaims”:“是”;”;
List lstRootobject=Newtonsoft.Json.JsonConvert.DeserializeObject(内容);
list.data=lstRootobject;
退货清单;
}
}

您正在填充“持有者”,然后您没有对其执行任何操作,并将其覆盖为“列表”。然后您直接与列表交互……但列表始终只是一个空的
新iapVm()
我不确定iRestreponse返回的是什么,但如果它与HttpClient相同,是否需要首先从内容中获取字符串?例如
response.content.ReadStringAsync().GetWaiter().GetResult()
。这仍然不能解决您没有对holder做任何事情的任何问题,并且列表始终是默认实例。我现在只是猜测,因为没有太多东西可以做……但是可能您想删除行
holder=list;
然后在
list.data=lstRootobject;
下面执行
list.data.Add(holder)
?您是否有在
内容中返回的字符串示例
您可以尝试以下操作:public static iapVm GetList(string iapNumber){iapVm list=new iapVm();var client=new RestClient(“);var request=new RestRequest(Method.GET);request.AddParameter(“Number”),IRestResponse=client.Execute(请求);var content=response.content;List-lstRootobject=Newtonsoft.Json.JsonConvert.DeserializeObject(内容);List.data=lstRootobject;return List;}太棒了,我很高兴你能让它工作起来:)我知道这些事情有时会有多大压力,我们都经历过
 public class Rootobject
 {
     //Employer and Carrier information 
     public string Employer { get; set; }
     public string Phone { get; set; }
     public string InsUnder { get; set; }
     public string Carrier { get; set; }
     public string CarrierPh { get; set; }
     public string Group { get; set; }
     public string MailTo { get; set; }
     public string MailTo2 { get; set; } //place holder
     public string MailTo3 { get; set; }
     public string EClaims { get; set; }
     public string FAXClaims { get; set; }
     public string DMOOption { get; set; }
 }

 public class iapVm
 {
     public List<Rootobject> data { get; set; }
 }

 public class Class1
 {
     public iapVm TestDeserializingValidResponseContent()
     {
         //Response object
         iapVm list = new iapVm();
         string content = "[{\"_id\":\"asdf\",\"Employer\":\"1 800 Foo & Bar (Schedule Plan)\",\"EmpNumberXXX\":\"(333)-111-2222 : (800)-234-2344\",\"InsUnder\":\"asdf asdf\",\"DMOOption\":\"No\",\"Medical\":\"asdf (800)-234-2344 Group#:23443\",\"DateXXX\":\"May\",\"Carrier\":\"Cigna\",\"‌​CarrierPh\":\"(222)-‌​234-234234\",\"FAXClai‌​ms\":\"No. Will Not Accept\",\"Plan\":\"Self-Funded\",\"Group\":\"Cigna (800)-234-2344 Group#:23443\",\"GroupNum\":\"2343\",\"EClaims\":\"Yes\"}]";
         List<Rootobject> lstRootobject = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Rootobject>>(content);
         list.data = lstRootobject;
         return list;
     }
 }