![](/img/trans.png)
[英]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.