2016-05-12 13 views
-2

Ich habe ein Problem mit meinem C# -Code. Ich kann nicht reparieren. Ich möchte nur alle Titel von Json bekommen. Es zeigte sich Fehler bei:Ich kann JSON nicht in Zeichenfolge parsen

var obj = JObject.Parse(jsons); 

"Unexpected Charakter auf beim Parsen Wert: Path. '', Zeile 0, Position 0"

public void getTitle() 
{ 
    ArrayList myTitle = new ArrayList(); 
    string url = "https://www.fiverr.com/gigs/endless_page_as_json?host=subcategory&type=endless_auto&category_id=3&sub_category_id=154&limit=48&filter=auto&use_single_query=true&page=1&instart_disable_injection=true"; 
    using (var webClient = new System.Net.WebClient()) 
    { 
     var jsons = webClient.DownloadString(url); 
     if (jsons != null) 
     { 
      var obj = JObject.Parse(jsons); 
      var urll = (string)obj["gigs"]["title"]; 
      myNode1.Add(urll); 
     } 
     else 
     { 
      MessageBox.Show("nothing"); 
     }    
    } 
} 
+0

Swow-Wert hat 'var jsons'. – BWA

+0

Wenn Sie die Website direkt öffnen, wird automatisch eine Datei mit dem gewünschten JSON heruntergeladen. Was Sie wollen, ist das JSON zu analysieren, das in dieser Datei und nicht der Quellcode der Website ist. –

+0

Sie müssen den Inhalt von gzip dekomprimieren (das bekommen Sie von der URL), Sie können es mit WebRequest tun und die Eigenschaft AutomaticDecompression auf DecompressionMethods.GZip setzen: http://stackoverflow.com/questions/33080674/read-httpwebreponse- using-getresponsestream-readtoend-return-merkwürdig-Zeichen –

Antwort

2

WebClient Klasse wird in diesem Fall keine Hilfe, da die Daten zurückgegeben werden in gzip-Komprimierungsformat ist. Der Punkt der Verwirrung ist, dass, wenn dieselbe URL in einem Browser durchsucht wird, reiner Text angezeigt wird, da die Aufgabe der Dekomprimierung automatisch vom Browser selbst ausgeführt wird.

Das folgende Code-Snippet sollte Ihr Problem lösen. Auch der Array-Index fehlte, bevor Sie auf die Titeleigenschaft zugreifen konnten:

public void getTitle() 
{ 
    ArrayList myTitle = new ArrayList(); 
    string url = "https://www.fiverr.com/gigs/endless_page_as_json?host=subcategory&type=endless_auto&category_id=3&sub_category_id=154&limit=48&filter=auto&use_single_query=true&page=1&instart_disable_injection=true"; 

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
    request.AutomaticDecompression = DecompressionMethods.GZip; 
    HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
    using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet))) 
    { 
     var jsons = reader.ReadToEnd(); 
     if (jsons != null) 
     { 
      var obj = JObject.Parse(jsons); 
      var urll = (string)(obj["gigs"][0]["title"]); //returns: design a Tshirt for you   
     } 
    } 
}