使用c#

时间:2017-06-06 10:27:54

标签: c# json deserialization

我的问题是 我有这个JSON文件:

并且我必须将它保存在列表中但是当我尝试打印列表的第一个元素时,我得到一个System.ArgumentOutOfRangeException,就像我的列表为空。这是我的代码:

JavaScriptSerializer ser = new JavaScriptSerializer();            
        Causali o = new Causali();
        List<CausaliList> lista = new List<CausaliList>();
        WebRequest causali = (HttpWebRequest)WebRequest.Create("http://trackrest.cgestmobile.it/causali");
        WebResponse risposta = (HttpWebResponse)CreateCausaliRequest(causali).GetResponse();
        Stream data = risposta.GetResponseStream();
        StreamReader Leggi = new StreamReader(data);            
        string output = Leggi.ReadToEnd();
        lista = ser.Deserialize<List<CausaliList>>(output);
        lst2.Items.Add(lista[0]);

这些是我保存的两个类:

class Causali
    {
        public int id;
        public string causaliname;
        public string identificationcode;
        public string expired;
    }   

class CausaliList
    {
        public Causali causali;       
    }
你可以帮我解决一下吗?

2 个答案:

答案 0 :(得分:2)

要反序列化c#中的代码: 假设你有var getContent中的数据,那么你可以使用它:

dynamic getDesearilize = JsonConvert.DeserializeObject(getContent);

答案 1 :(得分:2)

请尝试将此作为您的根对象:

public class CausaliList
{
    public List<Causali> causali { get; set; }
}

然后像这样去除你的对象:

lista = ser.Deserialize<CausaliList>(output); 

最后你可以像这样访问列表:

lst2.Items.Add(lista.causali[0]);

注意:我强烈建议使用json.NET。