【发布时间】:2016-06-25 22:11:34
【问题描述】:
我正在尝试从 url 解析 JSON 并将其存储在数据集中。
public override void getJobsFromSource()
{
string url = @"https://data.usajobs.gov/api/jobs?Country=United%20States&NumberOfJobs=1&Page=1";
DataTable dt = new DataTable();
DataSet data = JsonConvert.DeserializeObject<DataSet>(url);
DataSet ds = new DataSet();
ds.Tables.Add(dt);
}
但我得到了这个异常:{“解析值时遇到意外字符:h.Path '', line 0, position 0.”} 我尝试了另一种方式:
public override void getJobsFromSource()
{
string url = @"https://data.usajobs.gov/api/jobs?Country=United%20States&NumberOfJobs=1&Page=1";
DataTable dt = (DataTable)JsonConvert.DeserializeObject(url, (typeof(DataTable)));
DataSet ds = new DataSet();
ds.Tables.Add(dt);
}
我也遇到了同样的异常。我做错了什么?谢谢
【问题讨论】:
-
DeserializeObject接受 JSON 字符串。https://...不是有效的 JSON。你正在寻找HttpClient。 -
一个 url 无论如何是 JSON 格式的?您的意思是 JsonConvert.DeserializeObject 实际上会以某种方式从该 URL 获取 JSON。它不会那样做。你只是给它一个字符串并要求它把它变成 JSON。你需要像 HTTPClient 这样的东西来首先获取 JSON
-
有关在 Json.NET 中使用
HttpClient的示例,请参阅 stackoverflow.com/questions/22675446/…。问题中显示的扩展方法应该可以满足您的需求。