我有一个使用mongodump工具生成的Bson文件,我想在C#代码中对其进行反序列化。为此,似乎可以使用mongodb C#驱动程序或Json.net库。我尝试了它们两个,但无法使它们正常工作。
使用Json.net库: “input”是Bson文件的路径。
在执行Deserialize()时,我遇到了以下异常:
无法将当前JSON对象(例如{"name":“value”})反序列化为类型“System.Collections.Generic.List`1[MoulinetteConsole.Json.Profil]”,因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。
要解决此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为普通的.NET类型(例如,不是整数这样的基元类型,不是像数组或List这样的集合类型),可以从JSON对象反序列化。还可以向类型添加JsonObjectAttribute以强制它从JSON对象反序列化。
如果使用bsondump工具将bson导出为json文件,则会得到以下结果: [EDIT]
此外,如果我替换:
使用Json.net库: “input”是Bson文件的路径。
JsonSerializer serializer = new JsonSerializer();
BsonReader reader = new BsonReader(File.OpenRead(input));
serializer.Deserialize<List<Json.Profil>>(reader);
在执行Deserialize()时,我遇到了以下异常:
无法将当前JSON对象(例如{"name":“value”})反序列化为类型“System.Collections.Generic.List`1[MoulinetteConsole.Json.Profil]”,因为该类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。
要解决此错误,请将JSON更改为JSON数组(例如[1,2,3]),或更改反序列化类型,使其成为普通的.NET类型(例如,不是整数这样的基元类型,不是像数组或List这样的集合类型),可以从JSON对象反序列化。还可以向类型添加JsonObjectAttribute以强制它从JSON对象反序列化。
如果使用bsondump工具将bson导出为json文件,则会得到以下结果: [EDIT]
{ "id" : "1",
"value" : { "foo" : null, "bar" : "test"}
}
{ "id" : "2",
"value" : { "foo" : null, "bar" : "test"}
}
此外,如果我替换:
serializer.Deserialize<List<Json.Profil>>(reader);
by
serializer.Deserialize<Json.Profil>(reader);
我不再收到异常,但我只能检索集合中的第一条记录。