2017-10-22 15 views
0

安らかなAPIからの応答いくつかのJSONを返す:抽出値

{ 
    "meta": { 
    "href": "http://localhost:54398/" 
    }, 
    "busPartner": { 
    "href": "http://localhost:54398/BusPartner", 
    "rel": [ 
     "collection" 
    ] 
    }, 
    "busPartnerType": { 
    "href": "http://localhost:54398/BusPartnerType", 
    "rel": [ 
     "collection" 
    ] 
    }, 
    "busPartnerPossAttrib": { 
    "href": "http://localhost:54398/BusPartnerPossAttribs", 
    "rel": [ 
     "collection" 
    ] 
    } 
} 

私はJSONからhref値のリストを抽出しようとしています。私は以下のようにJsonTextReaderを使用して、結果のリストのうち、私は必要な値を取る...

IList<string> tt = new List<string>(); 
JsonTextReader reader = new JsonTextReader(new StringReader(response)); 
while (reader.Read()) 
{ 
    if (reader.Value != null) 
    { 
     tt.Add(reader.TokenType + " " + reader.Value); 
    } 
    else 
    { 
     tt.Add(reader.TokenType.ToString()); 
    } 
} 

ことができますが...それは不器用と面倒です。より良い方法が必要です。すべての手がかりは?

答えて

0

あなたは、リストを抽出するためにJson.NetのLINQ-to-JSON API(JObjects)を使用することができます。

List<string> tt = JObject.Parse(response) 
    .Descendants() 
    .OfType<JProperty>() 
    .Where(jp => jp.Name == "href" && jp.Value.Type == JTokenType.String) 
    .Select(jp => (string)jp.Value) 
    .ToList(); 

フィドル:これはプロジェクトの私の部分でトラックにうまく私を入れているhttps://dotnetfiddle.net/sAf26B

+0

おかげで、まっすぐなコピーを働きました過去: –