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
Jon의 답변에 사용 된 using 문을 건너 뛰는 이유는 무엇입니까?
Skuli

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을 읽는 기능을 제공하지 않습니다. 따라서 두 단계로이 작업을 수행해야합니다.

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

1
@jsmith : 그것은 제안이 아니었다 ... OP는 그것을 언급했다 :)
Jon

나를 도와 주셔서 감사합니다. 구글에서 이것을 찾지 못한 것이 이상합니다.이 현실이 기본적인 질문이 아니 었습니까? JSON 오류를 'System.String'유형으로 역 직렬화 할 수 없습니다. 나는 그것이 올바르게 선언되지 않은 것이 내 클래스의 일부 속성이라는 것을 알고 있지만 단지 하나만 찾을 수는 없습니다. 그러나 나는 여전히 노력하고 있습니다! :)
ThdK

45

당신이 .NET 4.5을 사용하여 비동기 사용하고자하는 경우 당신은 사용할 수 있습니다 HttpClient에서 System.Net.Http:

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

    // Now parse with JSON.Net
}

1
Task와 함께 사용해야합니다async
Si8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.