2016-10-19 4 views
0

Googleは利用可能なクエリを使用しようとしていますが、JSON結果を含む添付されたtxtファイルを返します。私は初心者のプログラマーなので、私が撮影したショットのどれがうまくいかないのか理解できません。jsonを含むtxtストリームのWebリクエストをjObjectに変換する方法は?

public async Task<YouTubeSearchResult> SearchYouTubeAsync(string query) 
    { 
     var result = new YouTubeSearchResult(); 
     string errorMessage = ""; 
     try 
     { 
      string encodedName = WebUtility.UrlEncode(query); 
      Uri url = new Uri($"http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q={encodedName}"); 
      HttpClient client = new HttpClient(); 
      Stream streamResult = await client.GetStreamAsync(url); 
      StreamReader reader = new StreamReader(streamResult); 

      errorMessage = JsonConvert.SerializeObject(reader.ReadToEnd()); 
      JObject jsonResults = JObject.Parse(JsonConvert.SerializeObject(reader.ReadToEnd())); 

      result.Success = true; 
      result.Message = "Success getting search results"; 
      result.SearchResults = jsonResults; 
     } 
     catch (Exception ex) 
     { 
      result.Success = false; 
      result.Message = $"Server error getting search results: {errorMessage} | {ex}"; 
      result.SearchResults = null; 
     } 

     return result; 

    } 
} 

これは私が得るエラーコードと共に応答です。

{ 
    "success": false, 
    "message": "Server error getting search results: \"[\"search\",[\"search\",\"search and destroy\",\"searching for my baby bobby moore\",\"search engine optimization\",\"search and discard\",\"search for the worst\",\"search youtube\",\"searching\",\"search history\",\"search party sam bruno\"]]\" | Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 2.\r\n at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)\r\n at Newtonsoft.Json.Linq.JObject.Parse(String json, JsonLoadSettings settings)\r\n at OdsCode.Services.YouTubeSearchService.<SearchYouTubeAsync>d__3.MoveNext()", 
    "searchResults": null 
} 

明確にするために、エラーと現在の結果を別々に追加してください。

| Newtonsoft.Json.JsonReaderException: JsonReaderからJObjectを読み取る際にエラーが発生しました。現在のJsonReaderアイテムはオブジェクトではありません:String。 Newtonsoft.Json.Linq.JObject.Parse(String、String);行1、位置2。 でNewtonsoft.Json.Linq.JObject.Load(JsonReaderリーダー、JsonLoadSettings の設定)\ r \ n JSON、 JsonLoadSettings設定)\ rを\ nは OdsCode.Services.YouTubeSearchService.d__3.MoveNext() "

"サーバーエラー取得し、検索結果で: \"[\ "の検索\"、[\" 検索\ "検索と破棄\"、\ " ベイビーボビームーア\"、\ "検索と破棄\"、\ " 最悪の\"、\ "検索youtube \"、\ "検索エンジン 最適化\ "、\"検索\ "、\"検索履歴\ "、\"検索サーム bruno \ "]] \" |以下は

私はこれを理解するまで、私は郵便配達

http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q=search 

Cache-Control →no-cache, must-revalidate 
Content-Disposition →attachment; filename="f.txt" 
Content-Encoding →gzip 
Content-Length →136 
Content-Type →text/javascript; charset=UTF-8 
Date →Wed, 19 Oct 2016 20:10:17 GMT 
Expires →-1 
Pragma →no-cache 
Server →gws 
X-Frame-O 

ptions →SAMEORIGIN 
X-XSS-Protection →1; mode=block 

[ 
    "search", 
    [ 
    "search", 
    "search and destroy", 
    "searching for my baby bobby moore", 
    "search engine optimization", 
    "search and discard", 
    "search for the worst", 
    "search youtube", 
    "searching", 
    "search history", 
    "search party sam bruno" 
    ] 
] 

にGoogleからの取得応答は、私は今...ノー食品日のためにそれにされて私を助けている!!!!!

+0

を使用する必要がありますので、あなたが受信しているデータが配列であるように見えます。 'JsonConvert.SerializeObject'を使わないでください。 'JObject.Parse(reader.ReadToEnd())'はすべてです。 (object2json→シリアライゼーションとjson2object→デシリアライゼーション) –

+0

私はそれを取り除くと次のようになる→Newtonsoft.Json.JsonReaderException:JsonReaderからJObjectを読み込む際にエラーが発生しました。 Newtonsoft.Json.Linq.JObject.Parse(String json、JsonLoadSettings(JsonReader reader、JsonLoadSettings settings))\ n \設定)\ r \ n OdsCode.Services.YouTubeSearchService。 d__3.MoveNext() – Matt

答えて

1

問題1 - reader.ReadToEnd()を2回使用しています。最初にerrorMessageを読み込もうとすると、次の行で再度使用します。二度目にはすでにすべてを読んでいます。 は、行を削除します。

errorMessage = JsonConvert.SerializeObject(reader.ReadToEnd()); 

問題2 - それを読むために、あなたはあなたが受信側です

JArray jsonResults = JArray.Parse(reader.ReadToEnd()); 
+0

JArrayがトリックをしました!どうもありがとうございます!!!!!!!!! – Matt

関連する問題