Url से json string कैसे प्राप्त करें?


145

मैं अपना कोड फॉर्म XML JSON पर स्विच कर रहा हूं।

लेकिन मुझे नहीं पता कि दिए गए यूआरएल से JSON स्ट्रिंग कैसे प्राप्त करें।

URL कुछ इस प्रकार है: " https://api.facebook.com/method/fql.query?query=.....&format=json "

मैंने पहले XDocuments का उपयोग किया था, वहाँ मैं लोड विधि का उपयोग कर सकता था:

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
आप जॉन के उत्तर में उपयोग किए गए कथन का उपयोग क्यों छोड़ते हैं?
स्कुली

1
यह मेरे लिए काम नहीं किया जब तक मैं ब्लॉक var json = wc.DownloadString("url");में डाल दिया try-catch!
एलेक्स जोलीग

मुझे त्रुटि मिली "HttpRequestException: अनुरोधित पता नहीं दे सका" .. यह URL है: " localhost: 5200 / testapi / swagger / v1 / swagger.json , लेकिन यह URL के साथ काम किया है: petstore
उथेन

102

AFAIK JSON.Net URL से पढ़ने के लिए कार्यक्षमता प्रदान नहीं करता है। तो आपको इसे दो चरणों में करने की आवश्यकता है:

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

1
@ जिस्मिथ: यह एक सुझाव नहीं था ... ओपी ने इसका उल्लेख किया :)
जॉन

Thx मेरी मदद करने के लिए, यह अजीब है कि मुझे यह Google पर नहीं मिला, यह वास्तव में एक बुनियादी सवाल था? अब मुझे एक त्रुटि हो रही है: टाइप 'System.String' में JSON ऑब्जेक्ट को deserialize नहीं कर सकता। मुझे पता है कि यह मेरी कक्षा में कुछ विशेषता है जो सही घोषित नहीं है, लेकिन मैं सिर्फ एक को नहीं ढूंढ सकता। लेकिन मैं अभी भी कोशिश कर रहा हूँ! :)
ThdK

45

आप .NET 4.5 का उपयोग कर और async का उपयोग करना चाहते रहे हैं तो आप उपयोग कर सकते हैं HttpClientमें System.Net.Http:

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

    // Now parse with JSON.Net
}

1
तुम एक में उपयोग करने के लिए है Taskके साथasync
Si8
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.