2017-07-25 5 views
0

Ich bin mit Xamarin Formen und NewtonsoftWie kann ich einen JSer, der ein Objekt mit einem Array ist, deserialisieren? mit Newtonsoft Xamarin

deserialisieren funktioniert es nicht:

var itens = JsonConvert.DeserializeObject<List<Model.Loja>>(json); 

Hier ist meine JSON:

{ 
    "one": { 
    "two": [ 
     { 
     "cod": 142, 
     "nome": "name", 
     "phone": "23423", 
     "endereco": "address", 
     "cidade": "city" 
     }, 
     { 
     "cod": 142, 
     "nome": "name", 
     "phone": "23423", 
     "endereco": "address", 
     "cidade": "city" 
     } 
    ] 
    } 
} 
+0

Zeigen Sie den Code für 'Model.Loja'. – nbokmans

+0

"Eins" ist ein Objekt, das "Zwei" enthält, das Array ist. Sie sollten interessantes Modell haben –

+0

lol ... es ist ein Beispiel ... aber ich löste es mit Substring: D Vielen Dank Jungs –

Antwort

0

Das Problem war die "[]". Ich benutzte

response = json.Substring(json.IndexOf('[')); 
response = json.Substring(0, json.LastIndexOf(']') + 1); 

Und löste es.

1

Ihr Modell braucht Ihre JSON anzupassen Struktur. Versuchen Sie diese Klassen verwenden:

public class RootObject 
{ 
    public One one { get; set; } 
} 

public class One 
{ 
    public List<Loja> two { get; set; } 
} 

public class Loja 
{ 
    public int cod { get; set; } 
    public string nome { get; set; } 
    public string phone { get; set; } 
    public string endereco { get; set; } 
    public string cidade { get; set; } 
} 

dann wie folgt deserialisieren:

List<Loja> items = JsonConvert.DeserializeObject<RootObject>(json).one.two; 
0

Sie können für diese json eine bestimmte Modellklasse, versuchen http://json2csharp.com/ zu verwenden,

und dann können Sie es analysieren mit newtonsoft.

Wenn Sie json2chsarp verwenden, wird Ihre spezifische Klasse RootObject aufgerufen, Sie können sie jedoch umbenennen, damit sie Ihrem Modell entspricht.

var obj = JsonConvert.DeserializeObject<YourSpecificClass>(json); 
Verwandte Themen