2016-11-28 6 views
1

私は以下のようなJsonオブジェクトを持っています。属性でjsonプロパティを取得するC#

"log": { 
    "Response": [ 
     { 
     "@type": "Authentication", 
     "Status": "True", 
     "Token": "cc622e9c-0d56-4774-8d79-543c525471b4" 
}, 
{ 
     "@type": "GetApplication", 
     "AppId": 100, 
     "Available": "True" 
}]} 

私はappIdプロパティにアクセスする必要があります。私はヌル参照エラーを与える以下のコードを試してみました。間違いを理解するのを助けてください。ここで

dynamic JsonText = JObject.Parse(result); 
string AppId= JsonText ["log"]["Response @type='GetApplication'"]["AppId"].Tostring(); 

答えて

1

dotNetFiddle

  string json = @"{ 
    ""log"": { 

     ""Response"": [{ 
      ""@type"": ""Authentication"", 
      ""Status"": ""True"", 
      ""Token"": ""cc622e9c-0d56-4774-8d79-543c525471b4"" 

     }, { 
      ""@type"": ""GetApplication"", 
      ""AppId"": 100, 
      ""Available"": ""True"" 
     }] 
    } 
}"; 

      JObject result = JObject.Parse(json); 

      foreach(var item in result["log"]["Response"]) 
      { 
       Console.WriteLine(item["@type"]); 
       Console.WriteLine(item["AppId"]); 
      } 

@type

+0

ありがとうございます...私にこれを試してみましょう – user3064309

+0

@ user3064309助けがあれば正しいとマークすることができます。 – mybirthname

+1

完了.......... :) – user3064309

0

あなたはhttp://json2csharp.com/を使用して、モデルクラスを生成することができますが、動的な使用JObjectを使用し、応答でそのループの後と取る必要はありませんNewtonsoft.JsonとLINQを使って、私が示すようにIDを取得します。

string AppId = JObject.Parse(result)["log"].SelectToken("$.Response[?(@[email protected]=='GetApplication')]")["AppId"].ToString(); 
1

はあなたの例で示している方法のようにAppIdプロパティにアクセスするには、こんにちは、if( "@type": "GetApp )は2番目のものであり、場所を変更するものではありません。 obj ["log"] ["Response"] [1] ["AppId"]を使用することができます。

1
string json = @"{ 
    ""log"": { 

     ""Response"": [{ 
      ""@type"": ""Authentication"", 
      ""Status"": ""True"", 
      ""Token"": ""cc622e9c-0d56-4774-8d79-543c525471b4"" 

     }, { 
      ""@type"": ""GetApplication"", 
      ""AppId"": 100, 
      ""Available"": ""True"" 
     }] 
    } 
}"; 

JObject obj = JObject.Parse(result); 
string AppId = obj["log"]["Response"][1]["AppId"].ToString(); 
Console.WriteLine(AppId); 

@ user3064309:

モデルクラス

public class Response 
{ [JsonProperty("@type")] 
    public string Type { get; set; } 
    [JsonProperty("Status")] 
    public string Status { get; set; } 
    [JsonProperty("Token")] 
    public string Token { get; set; } 
    [JsonProperty("AppId")] 
    public int? AppId { get; set; } 
    [JsonProperty("Available")] 
    public string Available { get; set; } 
} 

public class Log 
{ 
    public List<Response> Response { get; set; } 
} 

public class RootObject 
{ 
    public Log log { get; set; } 
} 

は.cs

var results = JsonConvert.DeserializeObject<RootObject>(json); 
    var id= results.log.Response.FirstOrDefault(d => d.Type == "GetApplication").AppId; 
関連する問題