2017-07-25 71 views
0

我使用Xamarin形式和Newtonsoft反序列化如何反序列化與數組對象的json?使用Newtonsoft xamarin

它不工作:

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

這裏是我的JSON:

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

顯示'Model.Loja'的代碼。 – nbokmans

+0

「one」是包含數組「two」的對象。你應該有一個有趣的模型 –

+0

哈哈......它的一個例子......但我用子串解決了它:D 謝謝你們 –

回答

0

問題是「[]」。 我用

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

並解決了它。

1

你的模型需要匹配您的JSON結構體。嘗試使用這些類:

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

然後反序列化這樣的:

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

,您可以撥打特定的模型類爲JSON,嘗試使用http://json2csharp.com/

,然後你可以分析它使用newtonsoft。

如果您使用的是json2chsarp,那麼您的特定類將稱爲RootObject,但您可以將其重命名爲與您的模型相匹配。

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