Я создал простой класс с одним полем. class Test{int value;}
JSON.NET не может обрабатывать десериализацию простого массива?
Если я использую функцию сохранения ссылок и устанавливаю ее как «все» (т.е. как объекты, так и массивы), то, когда я просто сериализую массив объектов Test, он становится сериализованным как объект JSON со специальным член «$ values» со значениями массива вместе с ожидаемым свойством «id id» для сохранения ссылки на массив. Это очень хорошо, но снова все это ломается от десериализации.
Пройдя через исходный код, я обнаружил, что просто потому, что тест для «IsReadOnlyOrFixedSize
» является истинным, он устанавливает флаг «createdFromNonDefaultConstructor
» в true, что даже не имеет никакого смысла, поскольку, хотя это фиксированный размер array, он создается из конструктора по умолчанию, если только он не рассматривает конструктор массива с фиксированным размером нестандартный конструктор. Суть в том, что он должен иметь возможность обрабатывать что-то настолько базовое, и все же он выдает эту ошибку: «Cannot preserve reference to array or readonly list, or list created from a non-default constructor
».
Как можно десериализовать базовый массив, сохраняя все ссылки в JSON.NET без получения ошибки?
Вам удалось решить вашу проблему? –
Для решения более общей версии этой проблемы, где массив может включать рекурсивную саморегуляцию, см. [Не удается сохранить ссылку на массив или список только для чтения или список, созданный из конструктора, отличного от стандартного] (http: // stackoverflow .com/д/41293407/3744182). – dbc