Ich versuche, Datei mit einer Liste von Benutzern in JSON zu erhalten, es in eine Liste von Benutzerobjektobjekten zu serialisieren, einen neuen Benutzer zu dieser Liste hinzuzufügen und dann re-serialisieren Sie diese Liste und schreiben Sie sie in die Datei.C# UWP JSON.net Probleme beim Deserialisieren und Reserialisieren von Objekt aus Datei
Hier ist der Code, den ich verwendet habe.
public async void appendFile(User _user)
{
StorageFolder folder = ApplicationData.Current.LocalFolder;
StorageFile file = await folder.GetFileAsync("LocalUsers.txt");
string Json = await FileIO.ReadTextAsync(file);
List<User> users = JsonConvert.DeserializeObject<List<User>>(Json);
users.Add(_user);
string s = convertJson(users);
await FileIO.WriteTextAsync(file, s);
}
Wenn der Code ausgeführt wird wirft es diesen Fehler: Eine Ausnahme vom Typ ‚Newtonsoft.Json.JsonSerializationException‘ in Newtonsoft.Json.dll aufgetreten, wurde aber in Benutzercode
Zusätzliche Informationen nicht behandelt: Das aktuelle JSON-Objekt (z. B. {"name": "value"}) kann nicht in Typ 'System.Collections.Generic.List`1 [Xymby.Models.User]' deserialisiert werden, da der Typ ein JSON-Array benötigt (z. B. [1, 2,3]) um richtig zu deserialisieren.
Um diesen Fehler zu beheben, ändern Sie entweder den JSON in ein JSON-Array (zB [1,2,3]) oder ändern Sie den deserialisierten Typ, so dass es ein normaler .NET-Typ ist (zB kein primitiver Typ wie Integer, nicht ein Sammlertyp wie ein Array oder eine Liste), der aus einem JSON-Objekt deserialisiert werden kann. JsonObjectAttribute kann auch zum Typ hinzugefügt werden, um die Deserialisierung von einem JSON-Objekt zu erzwingen.
Nicht sicher, was ich hier falsch mache, würde jede Hilfe geschätzt werden auch würde ich für alle Änderungen offen sein, die effizienter als meine Implementierung sind.
Das bedeutet, dass die json Sie deserialisieren versuchen, ist keine Liste. Kannst du bestätigen, dass es mit [] 's verpackt ist? –
Das ist, was die Datei hat: sie wurde ursprünglich mit JSON.net serialisiert {"ID": "d5d8fa11-1a95-4a73-9666-66671bc03d51", "Name": "Brian"} – evilsushi