【问题标题】:How to convert array string of MongoDB json to bson. C# Mongo Bson?如何将MongoDB json的数组字符串转换为bson。 C# Mongo Bson?
【发布时间】:2025-12-20 21:45:11
【问题描述】:

我有一个文件。该文件包含以下文本:

[
{
    _id: ObjectId("5da08d49949b4c000100b90b"),
    ModifiedOn: ISODate("2019-10-11T14:10:17.461Z"),
    DateOfCreation: ISODate("2019-10-11T14:10:17.459Z"),
    DateModified: ISODate("2019-10-11T14:10:17.459Z"),
    Region: null,
    UniqueNumber: Long("465561"),
    Numiration: 1,
    Code: '001Е',
    User: { ID: ObjectId("someid") },
  }
  ]

我尝试执行以下操作。

JsonConvert.DeserializeObject(text);

但它不起作用。它会抛出异常。

解析值时遇到意外字符:O. 路径 '[0]._id',第 3 行,第 9 位。

我能做什么?我想将此文本转换为 bsonarray。没有自定义类。

我也尝试过这样做:

BsonArray array = BsonSerializer.Deserialize<BsonArray>(str);

但它抛出异常JSON reader was expecting a value but found 'Long'.

【问题讨论】:

  • @YongShun Shun JSON 阅读器期待一个值,但发现“长”。它抛出异常

标签: c# json mongodb bson jsonserializer


【解决方案1】:

ObjectId(...)Long(...)ISODate(...) 不是有效的 JSON。

如果您在 mongo shell 中有对象,您可以尝试使用 tostrictjson 内置函数来转换它,但请注意,mongo shell 会希望您使用 NumberLong() 而不是 Long()

在严格的 JSON 中,这些值看起来像“

{ 
    "_id" : { "$oid" : "5da08d49949b4c000100b90b" }, 
    "ModifiedOn" : { "$date" : "2019-10-11T07:10:17.461-0700" }, 
    "UniqueNumber" : { "$numberLong" : "465561" } 
}

【讨论】: