URL'den bir json dizesi nasıl alınır?


145

Kod formu XML JSON için değiştiriyorum.

Ancak belirli bir url'den bir JSON dizesi almak nasıl bulamıyorum.

URL şuna benzer: " https://api.facebook.com/method/fql.query?query=.....&format=json "

Daha önce XDocuments kullandım, orada load yöntemini kullanabilirsiniz:

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

JSON için bu yöntemin eşdeğeri nedir? JSON.NET kullanıyorum.

Yanıtlar:


270

WebClientSınıfı şu konumda kullanın System.Net:

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

Yani WebClient, üretim kodunda IDisposablebuna bir usingifade ekleyeceğinizi unutmayın . Bu şöyle görünecektir:

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

8
Jon'un cevabında kullanılan kullanma ifadesini neden atlıyorsunuz?
Skuli

1
Ben koymak kadar benim için işe yaramadı var json = wc.DownloadString("url");içinde try-catchbloğun!
Alex Jolig

"HttpRequestException: İstenen adres atanamıyor " hatası buldum .. bu URL: " localhost: 5200 / testapi / swagger / v1 / swagger.json , ancak URL ile çalıştı: petstore.swagger.io/v2/swagger.json
Uthen

102

AFAIK JSON.Net, bir URL'den okuma işlevi sunmaz. Yani bunu iki adımda yapmanız gerekir:

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

1
@jsmith: Bir öneri değildi ... OP bundan bahsetti :)
Jon

Bana yardım ettiğin için teşekkürler, Bunu Google'da bulamadığım garip, bu gerçekten temel bir soruydu değil mi? Şimdi şöyle bir hata yaşıyorum: 'System.String' türüne JSON nesnesi serisini kaldıramıyor. Sınıfımda doğru beyan edilmemiş bir özellik olduğunu biliyorum, ama sadece hangisini bulamıyorum. Ama hala deniyorum! :)
ThdK

45

Eğer .NET 4.5 kullanarak ve zaman uyumsuz kullanmak istiyor iseniz o zaman kullanabilirsiniz HttpClientin System.Net.Http:

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

    // Now parse with JSON.Net
}

1
Bir kullanmak zorunda Taskolanasync
Si8
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.