2016-03-20 10 views
1

Ich kann JSON-Objekte aus irgendeinem Grund nicht aus der Datei deserialisieren, auch wenn es von einer Variablen funktioniert, die im Code selbst erstellt wurde. Aber wenn ich es stattdessen für einen anderen Pfad zu meiner JSON-Datei ausschalte; "Eine Ausnahme vom Typ" System.NullReferenceException "trat in jsonParseTest.dll auf, wurde aber nicht im Benutzercode verarbeitetKonnte JSON-Objekt aus Datei nicht serialisieren

Weitere Informationen: Objektverweis nicht auf eine Instanz eines Objekts festgelegt." Und zeigt auf listOfCustomers.data.

Es findet eindeutig die JSON-Datei, kann sie aber aus irgendeinem Grund nicht deserialisieren. Was könnte das Problem sein?

+0

Siehe http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it – Kalten

Antwort

1

Ich kann sehen, dass Ihre json in Zeile # 16 auskommentiert, beginnt mit einem Objekt namens Daten, und der Wert für diesen Schlüssel ist der JSON innerhalb eines Arrays. Und Sie versuchen, innerhalb der "listOfCustomers.data" zu iterieren, aber wenn Sie serialisieren, erstellen Sie einfach ein Customer-Objekt und übergeben dieses als Parameter an die jsonConvert.SerializeObject() - Methode.

Sie müssen eine neue Kundenliste erstellen und das Kundenobjekt in den neu angelegten Kundenlistenschlüssel "Daten" als Liste des Typs Kunde aufnehmen. Danach können Sie versuchen, die neu angelegte Kundenliste zu serialisieren, die aus einer Liste vom Typ Kunde besteht.

Customer customer = new Customer { id = “234234”, name = “Mikael” }; 
CustomerList customerList = new CustomerList { data = new List<Customer> { customer } }; 
string outputJSON = JsonConvert.SerializeObject(customerList); 
System.IO.File.WriteAllText(outputPath, outputJSON); 

Auch ich kann sehen, dass Sie zwei verschiedene Klassen für die Serialisierung und Deserialisierung verwenden wie die Zeile # 23

Statt die JavaScriptSerializer zu verwenden, die ein Teil des .net-Framework ist, könnten Sie Verwenden Sie einfach die JsonConvert.DeserializeObject -Methode, da Sie bereits andere Methoden aus der JsonConvert-Klasse verwenden.

CustomerList listOfCustomers = JsonConvert.DeserializeObject<CustomerList>(json); 

Hier verwenden wir den JsonConvert.DeserializeObject -Methode und vorbei in einem Customer-Typ.

Verwandte Themen