Parsing mit Json.NET: "Unerwartetes token: StartObject"
Ich bin Parsen von JSON und ich bekomme die folgende Fehlermeldung:
Ich bin mit dem Newtonsoft.Json.NET dll.
Fehler beim Lesen der Zeichenfolge. Unerwartetes token: StartObject. Pfad '[0]', line 1, position 2.
Dies ist der code, den ich habe:
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;
}
Kategorie können Sie eine der folgenden Zeichenfolgen:
["Admin-Tools", "Anti-Griefing-Tools", "Chat-Related", "Entwickler-Werkzeuge", "Wirtschaft", "Korrekturen", "Spaß", "allgemein", "Informations -", "Mechanik", "Sonstiges", "Rollenspiele", "Teleportation", "Website-Administration", "World-Bearbeitung und-Verwaltung", "Welt " Generatoren"]
EDIT: Das ist die Antwort, die ich bekomme:
[{"description": "Stop users swearing\n", "name": "a5h73y", "plugname": "NoSwear"}, {"description": "Be sure that your server rules are read and accepted!", "name": "acceptdarules", "plugname": "AcceptDaRules"}]
Weiß jemand, warum es nicht funktioniert? Es verwendet, um die Arbeit vor :/.
- Poste bitte die genaue JSON-Daten vom server empfangen. Die Chancen sind es ist nicht "ein array von strings" aus welchem Grund auch immer.
- (Eigentlich sehen die Antwort ist lang, post eine kurze, aber sollte-werden-gültig-pro-Erwartungen-version der Antwort zeigt den gleichen Fehler. Der Fehler ist, dass JSON.NET ist die Suche nach einem
{
wo es erwartet einen string beginnen. Liste<string> Karten zu["a", "b", "etc"]
in der Erwägung, dass die Daten[{someobj1}, {someobj2}, {etc}]
.) - Hier ist ein kleines Stück code, den ich bekommen: [{"description": "user Aufhören zu fluchen\n", "name": "a5h73y", "plugname": "NoSwear"}, {"Beschreibung": "Seien Sie sicher, dass Ihre server-Regeln gelesen und akzeptiert!", "name": "acceptdarules", "plugname": "AcceptDaRules"}
- Update, die in der main-post (vergessen Sie nicht, fügen Sie ein
]
am Ende machen es zu einem repräsentativen Stichprobe). - Wenn es "früher" war auch die Daten von dem server die gleichen? Vielleicht hat es sich geändert?
- Sie aktualisiert die API ist, was Sie sagte, und ich bin nicht wirklich so genial in JSON :(.
- Ja, wahrscheinlich müssen nur mit der Zeit ändern. Sehen LBs Antwort.
- Danke, ja ich Teste das jetzt. Es scheint zu funktionieren-ein lil bit 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre json ein array von komplexen Objekt und kein array von strings. Versuchen Sie dies (GETESTET):
BEARBEITEN
List<object>
Typ Deserialisieren und ein ToString() auf jedes Element in der Liste. Dieser zurückkehren würde, so etwas wie{ "description": null, "name": "abitofrealism", "plugname": "AbitOfRealism" }
http://api.bukget.org/api2/bukkit/plugin/aboot
Error reading string. Unexpected token: StartObject. Path 'authors[0]', line 1, position 4926.
dynamic
) Deserialisieren diese Antwort.Type 'System.Collections.Generic.Dictionary
2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' wird nicht unterstützt, die für die Deserialisierung eines Arrays.`{...}
ist ein Objekt, aber json wie[...]
ist ein Arrays. Deserialisierung zum Wörterbuch funktioniert nur für Objekte. Für arrays einen anderen code benötigt wird.(oder jedes Element im array sollte abgeflacht werden getrennt.)