2017-10-06 7 views
1

ImはNewtonsoft.JSONパッケージでJSONを解析しようとしています。newtonsoft.jsonのネストされた使用方法

string jsonData = 
"{\"name\":\"olga\",\"tokenmode\":\"bearer\",\"expires\":9483,\"refresh\":\"{\\\"Id\\\":\\\"alla-ieih-8493j-2455d\\\",\\\"Id\\\":\\\"94094-3838485-kdooj4u\\\"}\",\"status\":\"10\",\"namestatus\":\"5\"}"; 


dynamic aa = JsonConvert.DeserializeObject(jsonData); 

var name = aa.name.tostring(); //Outputs olga 

var id = aa.refresh.Id.ToString(); //Gives error 

質問どのようにIDデータにアクセスできますか?

+1

は 'インラインJSONであることをrefresh'supposedていますか?はいの場合、それは正しくないとあなたはより具体的にあなたは最後のIDを取得することができます。 'Id'は重複したキーなので。 – PinBack

答えて

4

あなたはこれをしなければならない

dynamic refresh = JsonConvert.DeserializeObject(aa.refresh.ToString()); 
+0

これは動的である必要はありません –

0

を追加する必要があります:

var id = aa.refresh[0].Id.ToString(); 
+0

これを前にテストし、{"Newtonsoft.Json.Linq.JValueに子値にアクセスできません"} –

1

クラスを作成します。

Player player = JsonConvert.DeserializeObject<Player>(jsonstring); 
:オブジェクトを求める
class Player 
{ 
    public Guid ID { get; set; } 
    public string Name { get; set; } 
    public TimeSpan Elapsed { get; set; } 

    [JsonConstructor] 
    public Player(Guid id, string name, TimeSpan elapsed) 
    { 
     this.ID = id; 
     this.Name = name; 
     this.Elapsed = elapsed; 
    } 
    public Player(string name, TimeSpan elapsed) 
    { 
     this.ID = Guid.NewGuid(); 
     this.Name = name; 
     this.Elapsed = elapsed; 
    } 
} 

は、オブジェクトの一覧を確認する:

List<Player> players = JsonConvert.DeserializeObject<List<Player>>(jsonstring); 
関連する問題