如何从URL获取一个JSON字符串?


Answers:


270

在中使用WebClientSystem.Net

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

请记住WebClientIDisposable,因此您可能会using在生产代码中为此添加一条语句。看起来像:

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

8
为什么您跳过Jon答案中使用的using语句?
Skuli 2014年

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:这不是一个建议...操作员提到了它:)
乔恩

谢谢你帮我,很奇怪,我没有在Google上找到这个,这真的是一个基本问题,不是吗?我现在遇到类似错误:无法将JSON对象反序列化为类型'System.String'。我知道这是我类中的某些属性,没有正确声明,但是我找不到这两个属性。但是我还在努力!:)
ThdK 2011年

45

如果您使用的是.NET 4.5,并且想使用异步,则可以HttpClientSystem.Net.Http以下位置使用:

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

    // Now parse with JSON.Net
}

1
你必须在使用它Taskasync
SI 8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.