如何从MongoDB序列化JSON动态大小的多维数组

本文关键字:数组 动态 MongoDB 序列化 JSON | 更新日期: 2023-09-27 18:20:21

我正在使用10Gen驱动程序从MongoDB读取一些坐标。我遇到的问题是多维数据的深度不一致,我正在寻找一个全面的策略来处理这个问题。

解决方案必须能够以与读取(反序列化)相同的顺序和深度将坐标写回MongoDB(序列化)。

两个不同深度的例子:

示例1

     [ 
       [ [ [ 12, 33 ], [ 32, 23 ], [ 12, 32], [23, 12 ], [ 32, 32 ], [ 32, 2 ] ] ],
       [ [ [35, 12 ], [ 53, 16 ], [ 22, 54 ], [ 2, 32 ], [ 32, 32 ] ] ]
    ]

反序列化为:

    public List<List<List<int>>> coordinates { get; set; } 

示例2

     [ 
       [ [ 2, 2 ], [120,12 ], [ 32,32 ], [ 32, 2 ], [ 3,2 ], [ 2, 3 ], [ 2, 1 ] ]
     ]

反序列化为:

public List<List<List<List<int>>>> coordinates { get; set; }

我最初的想法是编写一个自定义序列化程序来读取数据并计算深度,然后使用包装器方法从视图中隐藏实际数据,例如GetNextCoordinate(),然后函数GetNextCCoordinate可以从适当的结构中提取数据。这感觉很混乱,所以我正在寻找一个更通用的解决方案。

假设坐标属性是一个具体类的一部分,并且MongoDB中的集合包含两种类型的坐标文档的混合。这意味着对MongoDB的任何给定查询都会提取其中一种或两种类型的坐标文档,在执行查询之前我不知道。

如何从MongoDB序列化JSON动态大小的多维数组

也许可以试试http://www.codeproject.com/Articles/159450/fastJSON它可以序列化和反序列化为列表。我不知道它是否能做列表中的列表。

我最终编写了一个自定义的BSON序列化程序/反序列化程序,该程序支持变量嵌套数组。