【问题标题】:How To Serialize JSON Dynamically Sized Multi-dimensional Array From MongoDB如何从 MongoDB 序列化 JSON 动态大小的多维数组
【发布时间】:2013-06-28 13:55:33
【问题描述】:

我有一些使用 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() 和 GetNextCoordinate 函数可以从适当的结构中提取数据。感觉很乱,所以我正在寻找更通用的解决方案。

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

【问题讨论】:

  • 我不知道你在解决什么类型的问题,但这对我来说看起来不像干净的设计。如果您有列表列表,数据中是否存在某种语义?有没有办法确保每个 db 对象都有一个坐标列表和一些可用于查找的字段?
  • 同意,但是数据源不在我的控制范围内。

标签: c# json mongodb


【解决方案1】:

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

【讨论】:

  • 我已经通过使用自定义序列化程序来检查元素并确定存在哪种格式,但它既丑陋又脆弱。希望有一个没有那么难闻的通用解决方案。
【解决方案2】:

我最终编写了一个自定义的 BS​​ON 序列化器/反序列化器,然后它支持变量嵌套数组。

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 2019-02-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2022-11-30
    • 1970-01-01
    • 2012-11-08
    • 1970-01-01
    相关资源
    最近更新 更多