【发布时间】:2013-12-02 08:01:40
【问题描述】:
我创建了一个带有一个字段的简单类。 class Test{int value;}
如果我使用“保留引用”功能并将其设置为“全部”(即对象和数组),那么当我简单地序列化一个测试对象数组时,它会被序列化为带有特殊“$”的 JSON 对象values" 成员与数组值,以及预期的 "$id" 属性以保留数组引用。这很好,但整个事情又一次在反序列化时中断了。
单步浏览源代码,我发现仅仅因为“IsReadOnlyOrFixedSize”的测试为真,它就会将标志“createdFromNonDefaultConstructor”设置为真,这甚至没有任何意义,因为虽然它是固定大小的数组,它是从默认构造函数创建的,除非它认为任何固定大小的数组构造函数都是非默认构造函数。底线是它应该能够处理如此基本的事情,但它会抛出这个错误:“Cannot preserve reference to array or readonly list, or list created from a non-default constructor”。
如何反序列化基本数组,同时保留 JSON.NET 中的所有引用而不会出错?
【问题讨论】:
-
您的问题解决了吗?
-
有关此问题的更一般版本的解决方案,其中数组可能包含递归自引用,请参阅Cannot preserve reference to array or readonly list, or list created from a non-default constructor。
标签: arrays json.net deserialization strong-typing