2017-06-06 36 views
5

Mój problem jest mam ten plik JSON:deserializacji plik JSON z C#

i muszę zapisać go na liście, ale gdy próbuję wydrukować pierwszy element listy dostaję System.ArgumentOutOfRangeException , jak gdyby moja lista była pusta. to jest mój kod:

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]); 

i są to moje dwie klasy dla oszczędza:

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

i

class CausaliList 
    { 
     public Causali causali;  
    } 

możesz mi pomóc go rozwiązać?

+2

gdzie jest twój kod? – geminiousgoel

+0

Czy możesz podać próbkę wartości 'output' przed wywołaniem' Deserialize'? (Umieść punkt przerwania na linii 'Deserialize' i chwyć zawartość' output' gdy się zepsuje) –

+0

Witaj, twój kod jest w porządku ... możesz napisać ciąg Json, który deserializujesz w! – Wheels73

Odpowiedz

2

spróbuj tego jako przedmiotu głównego:

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

następnie deserilize Twój obiekt taki jak ten:

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

Wreszcie możesz uzyskać dostęp do o Listę taką:

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

Uwaga: zdecydowanie polecam korzystanie z json.NET.

+0

To nie działa, moja lista nadal zawiera 0 elementów i nie wiem dlaczego –

+0

kochanie @LorenzoValenti proszę zamieścić swoje wyniki . Dziękuję Ci. – David

+0

kochany @LorenzoValenti. zaktualizowałem moją odpowiedź. – David

2

deserializacji kodu w C#: Załóżmy masz dane w var getContent następnie można użyć to:

dynamic getDesearilize = JsonConvert.DeserializeObject(getContent);