尝试反序列化无效的
JSON时,是否可以使ServiceStack.Text库抛出.默认情况下,它看起来好像只是忽略了无效的JSON,因此结果对象包含空值.
当我尝试反序列化这个json时(一个“在MongoConnectionString之后丢失)
{
"MongoDb": {
"MongoConnectionString:"mongodb://localhost:27017/x",
"MongoDatabase":"x",
"MongoSafeModeEnabled":true,
"MongoSafeModeFSync":true,
"MongoSafeModeWriteReplicationCount":
"MongoSafeModeWriteTimeout":"00:00:00"
},
通过这样做:JsonSerializer.DeserializeFromString(json);
哪里
public class Configuration {
public class MongoDbSettings
{
public string MongoConnectionString {get;set;}
public string MongoDatabase {get;set;}
public bool MongoSafeModeEnabled {get;set;}
public bool MongoSafeModeFSync {get;set;}
public int MongoSafeModeWriteReplicationCount {get;set;}
public TimeSpan MongoSafeModeWriteTimeout {get;set;}
}
}
我得到一个配置对象,其中MongoDbSettings为null.在这种情况下,我宁愿得到一个例外.这可能吗?
最佳答案 目前,ServiceStack序列化器针对弹性进行了优化,即尽可能无错误地反序列化.
我建议添加一些自己的验证检查序列化,以确定哪些字段没有正确反序列化.
您还可以向支持选择加入标记(即在JsConfig上)的ServiceStack.Text项目提交拉取请求,以更改抛出异常的行为.