web-dev-qa-db-fra.com

Analyse avec Json.NET: "Jeton inattendu: StartObject"

J'analyse JSON et j'obtiens l'erreur suivante:

J'utilise la DLL Newtonsoft.Json.NET.

Erreur lors de la lecture de la chaîne. Jeton inattendu: StartObject. Chemin '[0]', ligne 1, position 2.

Voici le code que j'ai:

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;
    }

la catégorie peut être l'une des chaînes suivantes:

["Admin Tools", "Anti-Griefing Tools", "Chat Related", "Developer Tools", "Economy", "Fixes", "Fun", "General", "Informational", "Mechanics", "Miscellaneous" , "Jeux de rôle", "Téléportation", "Administration de site Web", "Édition et gestion du monde", "Générateurs du monde"]

EDIT: Voici la réponse que j'obtiens:

 [{"description": "Stop users swearing\n", "name": "a5h73y", "plugname": "NoSwear"}, {"description": "Be sure that your server rules are read and accepted!", "name": "acceptdarules", "plugname": "AcceptDaRules"}]

Quelqu'un sait-il pourquoi cela ne fonctionne pas? Il fonctionnait auparavant: /.

11
Yuki Kutsuya

Votre json est un tableau d'objets complexes et non un tableau de chaînes. Essayez ceci (TESTÉ):

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;
}

MODIFIER

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);
}
23
L.B