You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询:从MongoDB反序列化异构数组到C#的合适数据类型

MongoDB嵌套数组的C#反序列化数据类型问题

你的MongoDB集合中数据格式如下:

"data": [
         [
           "FA3T1",
           16
         ]
       ]

你尝试过以下两种类型,但均无法正常反序列化:

List<object> data {get;set;}

or

ArrayList data {get;set;}

可行的解决方案

因为data是数组嵌套数组的结构,内层数组包含字符串和整数两种不同类型,需要用嵌套的集合/数组类型来匹配:

  • 方案1:使用List<List<object>>
    直接对应嵌套数组的结构,外层List包裹内层的List,可以容纳不同类型的元素:
    public List<List<object>> data { get; set; }
    
    • 方案2:使用List<object[]>
      内层用object数组来存储不同类型的元素,同样适配嵌套结构:
    public List<object[]> data { get; set; }
    
    • 方案3:自定义类(适合结构固定的场景)
      如果内层数组的元素顺序和类型是固定的(字符串在前,整数在后),可以自定义类配合MongoDB的序列化配置来映射:
      首先定义实体类:
    [BsonSerializationOptions(Representation = BsonType.Array)]
    public class DataEntry
    {
        [BsonElement(0)]
        public string Code { get; set; }
        
        [BsonElement(1)]
        public int Value { get; set; }
    }
    

    然后在主实体类中定义:

    public List<DataEntry> data { get; set; }
    

    为什么之前的类型失效

    你之前用的List<object>或ArrayList只能匹配单层数组,但你的data是数组内部再嵌套数组,所以外层集合需要容纳的是内层的集合/数组,而非单个object元素,因此无法正常反序列化。

    内容的提问来源于stack exchange,提问作者Kailash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 00:39:17