2016-12-25 3 views
0

Ich erhalte den folgenden Fehler bei dynamic jsonText = JsonConvert.DeserializeObject(json);Fehler beim Deserialisieren JSON Ausgabe

ERROR

Unerwartetes Zeichen auf beim Wert analysiert: <. Pfad '', Linie 0, Position 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

es liegt daran, dass der Server einen Fehler wirft und HTML Rückkehr wahrscheinlich eine Standard 500-Fehlerseite oder ein 401. Html nicht deserialisiert als JSON werden kann. Sie müssen herausfinden, was der Fehler ist und korrigieren. – Crowcoder

+0

Die Ausgabe, die ich bekomme, ist ein XML. und es wird von Linkedin zurückgegeben. Wie kann ich dieses Problem lösen? – Illep

+0

Betrachten Sie zuerst Ihre 'json'-Variable und lesen Sie sie, um zu sehen, ob es sich um eine HTML-Fehlerseite handelt. Wenn nicht, dann deserialiere das XML, weil das wahrscheinlich alles ist, was du aufgrund der Antwort von FRL und deiner Antwort bekommen kannst. (Siehe hierzu) [http://www.newtonsoft.com/json/help/html/ConvertXmlToJson.htm] – Crowcoder

Antwort

2

Ich denke, es ist notwendig, um festzulegen, dass Sie das Ergebnis in json wünschen, andernfalls einige Web-Services liefert die Daten in XML-

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

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

aber in linkedin müssen Sie verwenden

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

Mehr Infos hier

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

+0

Aber ich bekomme den gleichen Fehler. – Illep

+0

Ja richtig. Oder Sie können einfach '? Format = json' an das Ende Ihrer URI anhängen. – Illep

Verwandte Themen