URLからjson文字列を取得するにはどうすればよいですか?


145

コード形式をXMLからJSONに切り替えます。

しかし、与えられたURLからJSON文字列を取得する方法が見つかりません。

URLは次のようなものです: " https://api.facebook.com/method/fql.query?query=.....&format=json "

以前にXDocumentsを使用しましたが、loadメソッドを使用できます。

XDocument doc = XDocument.load("URL");

JSONのこのメソッドに相当するものは何ですか?JSON.NETを使用しています。

回答:


270

次のWebClientクラスを使用しSystem.Netます。

var json = new WebClient().DownloadString("url");

覚えておいてWebClientいるIDisposableあなたは、おそらく追加することになりますので、using生産コードでこれに声明を。これは次のようになります。

using (WebClient wc = new WebClient())
{
   var json = wc.DownloadString("url");
}

8
ジョンからの回答で使用されているusingステートメントをスキップするのはなぜですか?
Skuli 2014年

1
var json = wc.DownloadString("url");try-catchブロックするまでそれは私にはうまくいきませんでした!
Alex Jolig

「HttpRequestException:割り当てられたアドレスを割り当てることができません」というエラーが見つかりました。これはURLです: " localhost:5200 / testapi / swagger / v1 / swagger.jsonですが、URLで動作します:petstore.swagger.io/v2/swagger.json
Uthen

102

AFAIK JSON.Netは、URLから読み取る機能を提供しません。したがって、これを2つのステップで行う必要があります。

using (var webClient = new System.Net.WebClient()) {
    var json = webClient.DownloadString(URL);
    // Now parse with JSON.Net
}

1
@jsmith:それは提案ではありませんでした... OPはそれを言及しました:)
Jon

私を助けてくれてありがとう、Googleでこれを見つけられなかったのは奇妙です、これは本当に基本的な質問でしたね?次のようなエラーが発生しました:JSONオブジェクトを型 'System.String'に逆シリアル化できません。正しく宣言されていないのは、クラスの属性の1つであることはわかっていますが、どれも見つかりません。しかし、私はまだ試しています!:)
ThdK

45

あなたは.NET 4.5を使用して非同期に使用したいしているなら、あなたは使用することができますHttpClientSystem.Net.Http

using (var httpClient = new HttpClient())
{
    var json = await httpClient.GetStringAsync("url");

    // Now parse with JSON.Net
}

1
あなたはそれを使用する必要がTaskasync
SI8
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.