【问题标题】:Parsing json from url and storing it in dataset. Unexpected character encountered while parsing从 url 解析 json 并将其存储在数据集中。解析时遇到意外字符
【发布时间】: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/…。问题中显示的扩展方法应该可以满足您的需求。

标签: c# json


【解决方案1】:

您正在尝试解析 URL 字符串,而不是该位置的实际 json 内容。

试试这个:

public override void getJobsFromSource()
{
    string url = @"https://data.usajobs.gov/api/jobs?Country=United%20States&NumberOfJobs=1&Page=1";

    using(WebClient client = new WebClient()) {
        string json = client.DownloadString(url);
        [...]

    }            

}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-04-10
  • 2014-06-09
  • 2016-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多