2011-11-12 10 views
0

私はwikipedia apiを使用してデータを照会しており、結果を文字列[]に変換したいと考えています。Json.netを使用してwikipediaのapi応答を変換する

クエリ "テスト"

en.wikipedia.org/w/api.php?action=opensearch&search=test&format=json&callback=spellcheck 

戻り、ここで、この結果:

spellcheck(["test",["Test cricket","Test","Testicle","Testudines","Testosterone","Test pilot","Test (assessment)","Testimonial match","Testimony","Testament (band)"]]) 

私はJson.netドロップまたはタグ "スペルチェック" を無視するために使用することはできますか? 私はこのコードを使用して応答、アプリケーションがクラッシュを変換する場合は、次の(JSONを使用して)

Dictionary<string, string[]> dict = JsonConvert.DeserializeObject<Dictionary<string, string[]>>(response); 

答えて

4

ウィキペディアのAPIを使用すると、JSONPを使用している前提としています。 、

さらにJSON =

en.wikipedia.org/w/api.php?action=opensearch &検索=テスト&フォーマット:あなたは自分のクエリ文字列から完全にコールバックパラメータをドロップすることができおそらく得られている結果をDictionary<string, string[]>に変換することはできません。よく見れば、実際には最初のオブジェクトが文字列(検索語)で、2番目が文字列(結果)のリストである配列です。

以下は、私の仕事:

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(
    @"http://en.wikipedia.org/w/api.php?action=opensearch&search=test&format=json"); 

string[] searchResults = null; 

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) 
{ 
    using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
    { 
     JArray objects = JsonConvert.DeserializeObject<JArray>(reader.ReadToEnd()); 
     searchResults = objects[1].Select(j => j.Value<string>()).ToArray(); 
    } 
} 
関連する問題