Bagaimana cara mendapatkan string json dari url?

145

Saya mengalihkan bentuk kode XML ke JSON.

Tetapi saya tidak dapat menemukan cara mendapatkan string JSON dari url yang diberikan.

URL adalah sesuatu seperti ini: " https://api.facebook.com/method/fql.query?query=.....&format=json "

Saya menggunakan XDocuments sebelumnya, di sana saya bisa menggunakan metode load:

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

Apa yang setara dengan metode ini untuk JSON? Saya menggunakan JSON.NET.

Terima kasih
sumber

Jawaban:

270

Gunakan WebClientkelas di System.Net:

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

Perlu diingat bahwa WebClientini IDisposable, sehingga Anda mungkin akan menambahkan usingpernyataan untuk ini dalam kode produksi. Ini akan terlihat seperti:

using (WebClient wc = new WebClient())
{
   var json = wc.DownloadString("url");
}
Zebi
sumber
8
Mengapa Anda melewatkan pernyataan menggunakan yang digunakan dalam jawaban dari Jon?
Skuli
1
Itu tidak bekerja untuk saya sampai aku meletakkan var json = wc.DownloadString("url");di try-catchblok!
Alex Jolig
Saya menemukan kesalahan "HttpRequestException: Tidak dapat menetapkan alamat yang diminta" .. ini adalah URL: " localhost: 5200 / testapi / swagger / v1 / swagger.json , tetapi bekerja dengan URL: petstore.swagger.io/v2/swagger.json
Uthen
102

AFAIK JSON.Net tidak menyediakan fungsionalitas untuk membaca dari URL. Jadi, Anda perlu melakukan ini dalam dua langkah:

using (var webClient = new System.Net.WebClient()) {
    var json = webClient.DownloadString(URL);
    // Now parse with JSON.Net
}
Jon
sumber
1
@ jsmith: Itu bukan saran ... OP menyebutkannya :)
Jon
Terima kasih telah membantu saya, Aneh bahwa saya tidak menemukan ini di google, ini benar-benar pertanyaan dasar bukan? Saya sekarang memiliki kesalahan seperti: Tidak dapat membatalkan objek JSON menjadi tipe 'System.String'. Saya tahu bahwa itu adalah beberapa atribut di kelas saya yang tidak dideklarasikan dengan benar, tetapi saya tidak dapat menemukannya. Tapi saya masih berusaha! :)
ThdK
45

Jika Anda menggunakan .NET 4.5 dan ingin menggunakan async maka Anda dapat menggunakannya HttpClientdi System.Net.Http:

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

    // Now parse with JSON.Net
}
Richard Garside
sumber
1
Anda harus menggunakannya dalam Taskdenganasync
Si8