簡體   English   中英

無法從 BsonType“Array”反序列化“BsonDocument”

[英]Cannot deserialize a 'BsonDocument' from BsonType 'Array'

我在嘗試將 json 字符串解析為 BsonDocument 時遇到此錯誤。

C# 代碼為:

        string jsonText = System.IO.File.ReadAllText(@"source.json");
        var document = BsonDocument.Parse(jsonText);
        var collection = _database.GetCollection<BsonDocument>("collectionName");
        collection.InsertOne(document);

雖然最后的 C# 代碼適用於單個文檔:

{
 "field1": 1,
 "field2": "value",
 "field3": "value",
 "field4": "value",
 "arr1": [
   {
    "arrField1": 1,
    "arrField2": "value"
   }
         ]
}

我在解析 json 數組文檔時收到異常Cannot deserialize a 'BsonDocument from BsonType 'Array'

[
 {
  "field1": 1,
  "field2": "value",
  "field3": "value",
  "field4": "value",
  "arr1": [
    {
      "arrField1": 1,
      "arrField2": "value"
    }
          ]
 },
 {
  "field1": 2,
  "field2": "value",
  "field3": "value",
  "field4": "value",
  "arr1": [
    {
      "arrField1": 1,
      "arrField2": "value"
    }
          ]
  }
]

關於如何解析具有多個元素的 json 的任何想法? 提前致謝。

您可以直接使用BsonArraySerializer

using (var jsonReader = new JsonReader(text))
{
   var serializer = new BsonArraySerializer();
   var bsonArray = serializer.Deserialize(BsonDeserializationContext.CreateRoot(jsonReader));
}

進一步了解@rnofenko 的答案您可以遍歷數組並逐個插入文檔

BsonArray bsonArray;

using (var jsonReader = new JsonReader(text))
{
     var serializer = new BsonArraySerializer();
     bsonArray = serializer.Deserialize(BsonDeserializationContext.CreateRoot(jsonReader));
}

var collection = database.GetCollection<BsonDocument>("SomeObject_Collection");

foreach (BsonValue bsonValue in bsonArray)
{
   var b = bsonValue.ToBsonDocument();
   await collection.InsertOneAsync(b);

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM