2017-07-25 2 views
0

xamarin Newtonsoftを使用して、私はそれが動作しないどのように配列を持つオブジェクトであるJSONを逆シリアル化できますか?

をデシリアライズするためにXamarinフォームとNewtonsoftを使用しています:ここで

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

LOLを持っているべきです...その例...しかし私は部分文字列でそれを解決しました: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; } 
} 

次に、このように逆シリアル化:あなたは、そのJSONのための特定のモデルクラスを作るhttp://json2csharp.com/を使用しようと、

、その後、あなたはそれを解析することができますすることができます

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

newtonsoftを使って。

json2chsarpを使用している場合、特定のクラスはRootObjectと呼ばれますが、モデルに合わせて名前を変更できます。

var obj = JsonConvert.DeserializeObject<YourSpecificClass>(json); 
関連する問題