2017-02-23 6 views
-1

私はこのJSONオブジェクトを用意しています。このオブジェクトは、適切なクラスを使用して変数にC#でデシリアライズしました。スタックされたオブジェクトからJSONデータC#を取得する方法

{"cmd": "test","cache": [{"cmd": "test","gw": [{"id": "123456"}],"data": "some_data"}]} 

「キャッシュ」の内側にある「gw」オブジェクトの内部にある「id」の値を取得するにはどうすればよいですか。

ベローは、逆シリアル化のための私のクラスです。

public class Gw 
{ 
    public string id { get; set; } 
} 

public class Cache 
{ 
    public string cmd { get; set; } 
    public List<Gw> gw { get; set; } 
    public string data { get; set; } 
} 

public class RootObject 
{ 
    public string cmd { get; set; } 
    public List<Cache> cache { get; set; } 
} 

EDIT

object model = JsonConvert.DeserializeObject<RootObject>(json); 

私がしようとした場合: 'オブジェクトは、' ' 'キャッシュ' となし拡張メソッドの定義が含まれていません:

string myID = model.cache[0].gw[0].id; 
string myID2 = model.cache.First().gw.First().id; 

私はこのメッセージが表示されますキャッシュ '型'オブジェクト 'の最初の引数を受け入れることができます(使用しているディレクティブまたはアセンブリ参照がありますか?)

答えて

0
RootObject model = JsonConvert.DeserializeObject<RootObject>(text); 
string myID = model.cache[0].gw[0].id; 
+0

チャームのように働いた! – Rapsoulis

+0

キャッシュに複数の配列がある場合、どのように数えることができますか? – Rapsoulis

+0

標準リストと同じように使用できます。したがって、すべてのフィールドとメソッド(たとえば、_model.cache.Count_または_model.cache.gw.Count_フィールド)にアクセスできます。ループ内でループを実行したい場合があります。foreach(model.cacheのvarアイテム){foreach(item.gwのvar itemGW){Console.WriteLine(itemGW.id); }} –

関連する問題