これは、.NETのリクエストから取得したJSONです。
{
"id": "110355660738",
"picture": {
"data": {
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/1027085_12033235063_5234302342947_n.jpg",
"is_silhouette": false
}
}
}
そして、(おそらく?)LINQを使用して、フィールド「url」をキャッチしたいと思います。私はこのように多くの要求をします、それは少し異なります。そのため、C#クラスを作成して毎回デシリアライズすることはしません。
単一のフィールドを抽出する方法ですか?ありがとうございました!
Linqは不要、dynamic
を使用するだけです( Json.Net を使用)
dynamic obj = JObject.Parse(json);
Console.WriteLine((string)obj.picture.data.url);
Linqバージョンはそれほど読みにくい
JObject jObj = JObject.Parse(json);
var url = (string)jObj.Descendants()
.OfType<JProperty>()
.Where(p => p.Name == "url")
.First()
.Value;
ドキュメント:LINQ to JSON
LINQはお勧めしません。 newtonsoft.jsonなどのJSONライブラリをお勧めします。
だからあなたはこれを行うことができます:
string json = @"{
""Name"": ""Apple"",
""Expiry"": "2008-12-28T00:00:00",
""Price"": 3.99,
""Sizes"": [
""Small"",
""Medium"",
""Large""
]
}";
JObject o = JObject.Parse(json);
string name = (string)o["Name"];
// Apple
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];
// Small
注:-このコードは、プロジェクトサイトにあるサンプルからコピーされました http://james.newtonking.com/pages/json-net.aspx
バインドでは、常にJSONを逆シリアル化してXMLにシリアル化し、XMLをXDocumentに読み込むことができます。その後、古典的なLinq to XMLを使用できます。完了したら、XMLを取得し、デシリアライズし、JSON to JSONにシリアル化します。この手法を使用して、元々XML用に構築されたアプリケーションにJSONサポートを追加しました。これにより、ほぼゼロの変更で起動して実行できました。