【发布时间】:2013-05-15 01:11:52
【问题描述】:
我有一个需要反序列化的大型 json 数据集。我正在使用 Json.net 的JsonTextReader 来读取数据。
我的问题是我需要反序列化一些派生类,所以我需要能够“向前看”定义我的数据类型的特定属性。在下面的示例中,“type”参数用于确定要反序列化的对象类型。
{
type: "groupData",
groupParam: "groupValue1",
nestedObject:
{
type: "groupData",
groupParam: "groupValue2",
nestedObject:
{
type: "bigData",
arrayData: [ ... ]
}
}
我的派生对象可能嵌套很重而且很深。不需要将整个数据集加载到内存中,因为它需要大量内存。一旦我进入“bigData”对象,我将处理数据(例如上面示例中的数组),但它不会存储在内存中(它太大了)。
到目前为止,我看到的所有问题的解决方案都使用JObject 来反序列化部分对象。我想避免使用JObject,因为它会反复反序列化层次结构中的每个对象。
如何解决我的反序列化问题?
有没有办法提前搜索“type”参数,然后回溯到对象的{字符开头开始处理?
【问题讨论】:
-
你不能取消类型字段并在你反序列化到的类中手动指定类型吗?提供类型不会一直改变。