[英]Cannot deserialize a 'BsonDocument from BsonType 'Array'
[英]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.