2016-03-25 14 views
1

Ich habe eine Methode in meinem Web-Service, die zwei Linq-Abfragen ausführt und die Ergebnisse in ein Jagged-Array einfügt. Ich versuche jetzt, das Array zu serialisieren und zu deserialisieren. Ich benutze newtonsoft json, um dies zu tun.Serialisieren und Deserialisieren eines gezackten Arrays C#

aber wenn ich versuche, um das Array deserialisieren ich folgendes erhalten:

Zusätzliche Informationen: Es konnte keine Instanz des Typs System.Array erstellen. Type ist eine Schnittstelle oder eine abstrakte Klasse und kann nicht instanziiert werden. Pfad '[0] [0]', Zeile 1, Position 3.

In meiner WebService-Methode Ich habe (Serialisierung):

Array[][] myArray = new Array[2][]; 
myArray[0] = mtsections; //linq query 1 
myArray[1] = sectionDetails; //linq query 2 

string myp = JsonConvert.SerializeObject(myArray); 

return myp; 

Und in meinem Klienten ich habe (Deserialisierung):

Jeder weiß was los ist?

Danke.

+0

Was sind die Arten von 'mtssections' und' sectionDetails'? –

+0

Am Ende meiner Linq Abfragen rufe ich '. ToArray()'. also sind sie vom Typ Array. Ich kann die JSON-Zeichenfolge in meinem Client sehen, also denke ich, das ist nicht das Problem. –

+0

Siehe Dokumentation, es ist eine abstrakte Klasse. https://msdn.microsoft.com/en-us/library/system.array(v=vs.110).aspx Ich glaube, dass Sie Array [] [] falsch verwenden. – Saleem

Antwort

0

Dies liegt daran, dass die Deserialisierung durchgeführt wird, indem zuerst Objekte mithilfe von Standardkonstruktoren erstellt und dann interne Werte gefüllt werden. Hier verwenden Sie eine Array-Klasse, die eine abstrakte Klasse ist. Daher können Sie keine Instanzen davon erstellen.

Wenn Sie zwei Arrays unterschiedlichen Typs verwenden möchten, wäre eine einfache Lösung, zwei Jsons zu senden.

Verwandte Themen