koa*_*911 5 null json json.net mongodb
以下测试代码演示了当对象值为null或什至BsonNull.Value时,在SerializeObject中发生的InvalidCastException。如果该值更改为42,则序列化工作正常。
var bson = new BsonDocument
{
{ "key", null /*BsonNull.Value*/ }
};
// the following fails with an inexplicable InvalidCastException...
var json = Newtonsoft.Json.JsonConvert.SerializeObject(
bson,
new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Include
});
Console.WriteLine(json);
Run Code Online (Sandbox Code Playgroud)
“使用MongoDB.Bson”和“使用Newtonsoft.Json”有效。Json版本是v12.0.1。
请注意,我也考虑过使用BsonDocument ToJson方法,但是它还存在其他问题(处理枚举值),因此我不再将其视为解决方法。
作为解决方法,您可以注册自定义约定,如下所示:
ConventionRegistry.Register("IgnoreIfDefault",
new ConventionPack { new IgnoreIfDefaultConvention(true) },
t => true);
Run Code Online (Sandbox Code Playgroud)
这将在序列化和反序列化时隐式地将 [IgnoreIfDefault] 属性应用于所有属性。
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |