JSON 配列で結果を返す API から情報を取得しようとしています。
これは私のコードです:
string sURL = "http://api.planets.nu/games/list?limit=1";
WebRequest wrGetURL = WebRequest.Create(sURL);
StreamReader objReader = new StreamReader(wrGetURL.GetResponse().GetResponseStream());
string sLine;
sLine = objReader.ReadToEnd();
Console.WriteLine(sLine);
Firefox に URL を貼り付けると、プレーン テキストで次のようになります。
[{"name":"Upikarium Sector","description":"This is a battle for the Upikarium Sector. This is a default configuration game. Custom map. This game has 2 turns per week.","shortdescription":"","status":2,"datecreated":"8\/28\/2011 10:11:28 PM","dateended":"1\/1\/0001 12:00:00 AM","maptype":2,"gametype":2,"wincondition":1,"difficulty":1.07299030764822,"tutorialid":0,"requiredlevelid":0,"maxlevelid":0,"masterplanetid":467,"quadrant":23,"mintenacity":0,"faststart":0,"turnsperweek":2,"yearstarted":8,"isprivate":false,"scenarioid":0,"createdby":"none","turn":229,"slots":11,"turnstatus":"xx3x_67x___","hostdays":"_M___F_","slowhostdays":"","hosttime":"18:3","lastbackuppath":"c:\\planetsdata\\backups\\game22158\\turn228-635191849885449557.zip","nexthost":"11\/8\/2013 6:03:00 PM","allturnsin":false,"lastnotified":false,"ishosting":false,"lastloadeddate":"11\/6\/2013 9:16:22 PM","deletedate":"","lasthostdate":"11\/4\/2013 6:04:49 PM","password":"","haspassword":false,"statusname":"Running","timetohost":"Next turn in 44 hours","id":22158}]
これは、私のコードで取得する必要があるものです。ゲーム情報を保持するオブジェクトを含む配列。
ただし、書き込み行の結果は文字化けした文字列です。適切なテキスト結果が得られないようです。私はしばらくこれについて頭を悩ませてきましたが、その理由がわかりません。JSON ディクショナリを返す API への get 呼び出しにより、完全に読み取り可能なテキストが得られるため、おそらく JSON 配列が返されることに関係しています。ただし、これは読み取り可能な文字列であることを拒否します!
簡単なものが欠けていると確信していますが、それは私には届きません!