2016-12-25 111 views
0

我收到以下错误在dynamic jsonText = JsonConvert.DeserializeObject(json);错误而反序列化JSON输出

ERROR

意外的字符在解析值遇到:<。路径',行 0,位置0

CODE

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); 

} 
+0

这是因为服务器引发错误,并返回HTML,可能是一个标准的500错误页面或401的Html无法反序列化JSON作为。你需要弄清楚错误是什么,并纠正错误。 – Crowcoder

+0

我得到的输出是一个XML。它由Linkedin返回。我该如何解决这个问题。 – Illep

+0

首先,实际看看你的'json'变量,并阅读它,看它是否是一个错误的HTML页面。如果没有,则反序列化xml,因为这可能是您根据FRL的答案和您的响应所能获得的。 (看到这个)[http://www.newtonsoft.com/json/help/html/ConvertXmlToJson.htm] – Crowcoder

回答

2

我认为有必要指定你想要的结果在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

+0

但我得到同样的错误。 – Illep

+0

是的。或者,您可以简单地将'?format = json'附加到URI的末尾。 – Illep