如何从 URL 获取 JSON 字符串?

Posted

技术标签:

【中文标题】如何从 URL 获取 JSON 字符串?【英文标题】:How to get a JSON string from URL? 【发布时间】:2011-07-30 19:56:52 【问题描述】:

我正在将我的代码从 XML 转换为 JSON。

但我找不到如何从给定的 URL 获取 JSON 字符串。

网址是这样的:“https://api.facebook.com/method/fql.query?query=.....&format=json”

我以前用过XDocuments,那里可以用load方法:

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

这个方法对于 JSON 的等价物是什么?我正在使用 JSON.NET。

【问题讨论】:

【参考方案1】:

System.Net 中使用WebClient 类:

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

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

using (WebClient wc = new WebClient())

   var json = wc.DownloadString("url");

【讨论】:

为什么要跳过 Jon 的回答中使用的 using 语句? 直到我将var json = wc.DownloadString("url"); 放入try-catch 块中,它才对我有用! 我发现错误“HttpRequestException:无法分配请求的地址”.. 这是 URL:“localhost:5200/testapi/swagger/v1/swagger.json,但它与 URL 一起使用:petstore.swagger.io/v2/swagger.json【参考方案2】:

AFAIK JSON.Net 不提供从 URL 读取的功能。所以你需要分两步来做:

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

【讨论】:

@jsmith:这不是一个建议...... OP提到了它:) 感谢帮助我,奇怪的是我在谷歌上没有找到这个,这真的是一个基本问题,不是吗?我现在遇到如下错误:无法将 JSON 对象反序列化为“System.String”类型。我知道这是我班级中的一些属性没有正确声明,但我就是找不到那个。但我还在努力! :)【参考方案3】:

如果您使用的是 .NET 4.5 并且想要使用异步,那么您可以在 System.Net.Http 中使用 HttpClient

using (var httpClient = new HttpClient())

    var json = await httpClient.GetStringAsync("url");

    // Now parse with JSON.Net

【讨论】:

您必须在 Taskasync 中使用它

以上是关于如何从 URL 获取 JSON 字符串?的主要内容,如果未能解决你的问题,请参考以下文章

Swift - 使用 SwiftyJSON 从 JSON 中获取字符串数组

从 URL 获取 JSON 字符串

Swift 3 - 如何从包含字符串的索引中读取 json 输出

C# JSON URL 获取数据

C# |从 URL 抓取 JSON 无法将字符串转换为 int

使用 axios 从 json url 获取图像