2016-05-12 6 views
-2

私のC#コードに問題があります。私は修正する方法を知らない。私はちょうどjsonからすべてのタイトルを取得したい。 それは時のエラーを示した: "値の解析中に予期しない文字が発生しました。:パス ''、ライン 0、位置0"文字列にJSONをパースできません

var obj = JObject.Parse(jsons); 

返されるデータは、GZIP圧縮形式であるよう

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

スワウワット値は 'var jsons'です。 – BWA

+0

ウェブサイトを直接開くと、自動的に目的のJSONを含むファイルがダウンロードされます。あなたが望むのは、このファイルの中にあり、ウェブサイトのソースコードではないJSONを解析することです。 –

+0

gzipの内容を解凍する必要があります(これはURLから取得したものです)、WebRequestを使用してその内容をAutomaticDecompressionプロパティにDecompressionMethods.GZipに設定することができます:http://stackoverflow.com/questions/33080674/read-httpwebreponse- using-getresponsestream-readtoend-return-strange-characters –

答えて

2

WebClientクラスは、このケースではありません助けになるだろう。混乱の要点は、ブラウザーで同じURLをブラウズすると、解凍のタスクがブラウザー自体によって自動的に実行されるため、プレーンテキストが表示されることです。

次のコードスニペットで問題を解決する必要があります。また、タイトルのプロパティにアクセスする前に配列インデックスが見つかりませんでした:

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   
     } 
    } 
} 
関連する問題