Сериализация и десериализация зубчатого массива C#

У меня есть метод в моем веб-сервисе, который запускает два запроса linq и вставляет результаты в Jagged Array. Сейчас я пытаюсь сериализовать и десериализовать массив. Для этого я использую newtonsoft json.

однако, когда я пытаюсь десериализовать массив, я получаю следующее:

Дополнительная информация: не удалось создать экземпляр типа System.Array. Тип является интерфейсом или абстрактным классом и не может быть создан. Путь '[0] [0]', строка 1, позиция 3.

В моем методе веб-сервиса у меня есть (сериализация):

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

string myp = JsonConvert.SerializeObject(myArray);

return myp;

И в моем клиенте у меня есть (десериализация):

string JSONString = context.ExpordOfQuestionsWord(RaId);

Array[][] myArray = new Array[2][];

myArray = JsonConvert.DeserializeObject<Array[][]>(JSONString);

Кто-нибудь знает, что происходит?

Спасибо.


person Conor Bradley    schedule 25.03.2016    source источник
comment
Какие бывают типы mtssections и sectionDetails?   -  person Dax Fohl    schedule 25.03.2016
comment
В конце моих запросов linq я вызываю '.ToArray()'. поэтому они имеют тип массива. Я вижу строку json в своем клиенте, поэтому я думаю, что это не проблема.   -  person Conor Bradley    schedule 25.03.2016
comment
Пожалуйста, смотрите документацию, это абстрактный класс. msdn.microsoft.com/en-us /library/system.array(v=vs.110).aspx Я считаю, что вы неправильно используете Array[][].   -  person Saleem    schedule 25.03.2016
comment
Извините, я действительно новичок в веб-сервисах, есть ли у вас какие-либо примеры того, как это сделать правильно? Буду очень признателен.   -  person Conor Bradley    schedule 25.03.2016


Ответы (1)


Это связано с тем, что десериализация выполняется путем создания объектов с помощью конструкторов по умолчанию, а затем заполнения внутренних значений. Здесь вы используете класс Array, который является абстрактным. Таким образом, вы не можете создавать его экземпляры.

Если вы хотите использовать два массива разного типа, то простым решением будет отправить два json.

person moped    schedule 25.03.2016