2017-07-25 4 views
0

J'utilise des formes Xamarin et Newtonsoft désérialiserComment désérialiser un json qui est un objet avec un tableau? en utilisant Newtonsoft Xamarin

Il ne fonctionne pas:

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

Voici mon JSON:

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

Afficher le code de 'Model.Loja'. – nbokmans

+0

"one" est un objet incluant "two" qui est array. Vous devriez avoir le modèle intéressant –

+0

lol ... c'est un exemple ... mais je l'ai résolu avec la sous-chaîne: D Merci les gars –

Répondre

0

Le problème était le "[]". je

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

Et résolu.

1

Votre modèle doit correspondre à votre JSON structure. Essayez d'utiliser ces classes:

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; } 
} 

Puis désérialiser comme ceci:

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

Vous pouvez faire une classe de modèle spécifique pour cette JSON, essayez d'utiliser http://json2csharp.com/,

et vous pouvez l'analyser en utilisant newtonsoft.

Si vous utilisez json2chsarp, votre classe spécifique s'appelle RootObject, mais vous pouvez la renommer pour qu'elle corresponde à votre modèle.

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