[英]Cannot deserialize a 'BsonDocument' from BsonType 'Array'
I'm getting this error at trying to parse a json string to BsonDocument.我在尝试将 json 字符串解析为 BsonDocument 时遇到此错误。
The C# code is: C# 代码为:
string jsonText = System.IO.File.ReadAllText(@"source.json");
var document = BsonDocument.Parse(jsonText);
var collection = _database.GetCollection<BsonDocument>("collectionName");
collection.InsertOne(document);
While last C# code works fine for a single document:虽然最后的 C# 代码适用于单个文档:
{
"field1": 1,
"field2": "value",
"field3": "value",
"field4": "value",
"arr1": [
{
"arrField1": 1,
"arrField2": "value"
}
]
}
I'm getting the exception Cannot deserialize a 'BsonDocument' from BsonType 'Array' while parsing a json array document:我在解析 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"
}
]
}
]
Any idea on how can I parse a json with multiple elements?关于如何解析具有多个元素的 json 的任何想法? Thanks in advance.
提前致谢。
You can directly use BsonArraySerializer
您可以直接使用
BsonArraySerializer
using (var jsonReader = new JsonReader(text))
{
var serializer = new BsonArraySerializer();
var bsonArray = serializer.Deserialize(BsonDeserializationContext.CreateRoot(jsonReader));
}
Further to the answer of @rnofenko You can run over the array and insert document by document进一步了解@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.