如何从 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");
请记住,WebClient
是 IDisposable
,因此您可能会在生产代码中为此添加 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
【讨论】:
您必须在Task
和 async
中使用它以上是关于如何从 URL 获取 JSON 字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 使用 SwiftyJSON 从 JSON 中获取字符串数组
Swift 3 - 如何从包含字符串的索引中读取 json 输出