JSONを解析していますが、次のエラーが発生します。
Newtonsoft.Json.NET dllを使用しています。
文字列の読み取りエラー。予期しないトークン:StartObject。パス '[0]'、行1、位置2。
これは私が持っているコードです:
public static List<string> GetPluginByCategory(string category)
{
var wc = new WebClient();
var json = wc.DownloadString("http://api.bukget.org/api2/bukkit/category/" + category);
var list = JsonConvert.DeserializeObject<List<string>>(json);
return list;
}
categoryは、次の文字列のいずれかです。
[「管理ツール」、「グリーフィング防止ツール」、「チャット関連」、「開発者ツール」、「エコノミー」、「修正」、「楽しい」、「一般」、「情報」、「メカニズム」、「その他」 、「ロールプレイング」、「テレポーテーション」、「ウェブサイトの管理」、「世界の編集と管理」、「世界のジェネレータ」]
編集:これは私が得る応答です:
[{"description": "Stop users swearing\n", "name": "a5h73y", "plugname": "NoSwear"}, {"description": "Be sure that your server rules are read and accepted!", "name": "acceptdarules", "plugname": "AcceptDaRules"}]
それが機能しない理由を誰かが知っていますか?以前は動作していました:/。
Jsonは、文字列の配列ではなく、複雑なオブジェクトの配列です。これを試してください(テスト済み):
WebClient wc = new WebClient();
string json = wc.DownloadString("http://api.bukget.org/api2/bukkit/category/Teleportation");
var items = JsonConvert.DeserializeObject<List<MyItem>>(json);
public class MyItem
{
public string description;
public string name;
public string plugname;
}
[〜#〜]編集[〜#〜]
WebClient wc = new WebClient();
var json = wc.DownloadString("http://api.bukget.org/api2/bukkit/plugin/aboot");
dynamic dynObj = JsonConvert.DeserializeObject(json);
Console.WriteLine("{0} {1}", dynObj.plugname,dynObj.link);
foreach (var version in dynObj.versions)
{
var dt = new DateTime(1970, 1, 1).AddSeconds((int)version.date);
Console.WriteLine("\t{0} {1} {2}",version.version, version.download, dt);
}