无法从BsonType'数组'反序列化' BsonDocument。

时间:2017-05-02 05:27:10

标签: c# json mongodb

尝试运行以下代码:

var doc = BsonDocument.Parse(rawjson);

其中rawjson是:

[{"PersonName":"Jim Test"}]

返回以下错误:

Cannot deserialize a 'BsonDocument' from BsonType 'Array'.

根据大多数在线json验证器,rawjson似乎有效。有没有其他方法可以使用Mongodb C#驱动程序将其解析为BsonDocument?

1 个答案:

答案 0 :(得分:0)

由于您没有准确说明rawjson的数据类型,我认为您的意思是字符串。

BsonDocument.Parse()方法手册指定它接受string作为参数。

要么,你的“原始json”可能是一个JSON文档的字符串:

var rawjson = "{'PersonName': 'Jim Test'}";
Console.WriteLine(BsonDocument.Parse(rawjson));

或者,它可以是字符串格式的JSON文档数组:

string[] rawjson = { "{'PersonName': 'Jim Test'}" };
Console.WriteLine(BsonDocument.Parse(rawjson[0]));

或者,如果您的原始json字符串实际上是数组文档字符串的形式:

var rawjson = "[{'PersonName': 'Jim Test'}]";

string[] separatingChars = { "[", ",", "]" };  // split on these chars
string[] docs = rawjson.Split(separatingChars, System.StringSplitOptions.RemoveEmptyEntries );  

foreach (string doc in docs) {
    Console.WriteLine(BsonDocument.Parse(doc));
}