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

C#如何将MongoDB的JSON数组字符串转换为BsonArray?

解决方案

问题原因

你手里的文本不是标准JSON,也不是MongoDB严格模式的扩展JSON,而是Mongo Shell输出的Shell模式JSON,包含ObjectId()、ISODate()、Long()这类Mongo Shell内置构造函数语法,默认的JSON解析器和Bson序列化器都不会识别这类语法,所以会报错。

解决步骤

不需要自定义类,只需要调整MongoDB官方Bson库的解析配置,开启Shell语法支持即可:

  1. 先确保项目已安装NuGet包 MongoDB.Bson
  2. 使用带自定义配置的JsonReader进行解析,核心是开启AllowShellValues参数,示例代码如下:
using MongoDB.Bson;
using MongoDB.Bson.IO;
using MongoDB.Bson.Serialization;

// 你的原始文本字符串
string str = "你的原始文件内容";

// 配置解析规则,支持Mongo Shell语法
var readerSettings = new JsonReaderSettings
{
    AllowShellValues = true
};

// 传入自定义设置进行解析
using var jsonReader = new JsonReader(str, readerSettings);
BsonArray resultArray = BsonSerializer.Deserialize<BsonArray>(jsonReader);

效果验证

解析完成后你可以直接操作BsonArray里的元素,无需自定义类映射:

// 取第一个文档的_id值
ObjectId id = resultArray[0].AsBsonDocument["_id"].AsObjectId;
// 取UniqueNumber的长整型值
long uniqueNum = resultArray[0].AsBsonDocument["UniqueNumber"].AsInt64;

内容的提问来源于stack exchange,提问作者Витязи Team

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:45:02