【问题标题】:Error while Deserializing JSON output反序列化 JSON 输出时出错
【发布时间】:2017-05-10 03:19:51
【问题描述】:

我在dynamic jsonText = JsonConvert.DeserializeObject(json); 收到以下错误

错误

解析值时遇到意外字符:

代码

string api = "https://api.linkedin.com/v1/people/~:(id,first-name,formatted-name,email-address)";
using (var webClient = new WebClient())
{
    webClient.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);
    var json = webClient.DownloadString(api );
    dynamic jsonText = JsonConvert.DeserializeObject(json);

}

【问题讨论】:

  • 这是因为服务器抛出错误并返回 HTML,可能是标准的 500 错误页面或 401。Html 无法反序列化为 JSON。你需要弄清楚错误是什么并纠正它。
  • 我得到的输出是一个 XML。它被Linkedin退回。我该如何解决这个问题。
  • 首先,实际查看您的json 变量并读取它,看看它是否是一个错误的html 页面。如果不是,则反序列化 xml,因为这可能是您根据 FRL 的回答和您的回答所能获得的全部内容。 (见此)[newtonsoft.com/json/help/html/ConvertXmlToJson.htm]
  • @Illep,FRL 正在做某事。您应该阅读该答案中链接到的文档。

标签: c# json deserialization linkedin-api


【解决方案1】:

我认为有必要指定你想要json中的结果,否则有些web服务返回xml中的数据

webClient.Headers.Add(System.Net.HttpRequestHeader.Accept, "application/json");

//also the encoding if need
webClient.Headers.Add(System.Net.HttpRequestHeader.AcceptEncoding, "utf-8");

但在linkedin中你必须使用

webClient.Headers.Add("x-li-format", "json");

更多信息在这里

https://developer.linkedin.com/docs/rest-api

【讨论】:

  • 是的,正确。或者您可以简单地将 ?format=json 附加到您的 URI 的末尾。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
相关资源
最近更新 更多