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.

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");
}

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
}

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
}

1
Anda harus menggunakannya dalam Taskdenganasync
Si8
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.