配置ServiceStack.Text以抛出无效的JSON

时间:2012-01-23 13:41:35

标签: json servicestack

尝试反序列化无效的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。在这种情况下,我宁愿得到一个例外。这可能吗?

1 个答案:

答案 0 :(得分:2)

目前,ServiceStack序列化程序针对弹性进行了优化,即尽可能无错误地反序列化。

我建议您添加一些自己的验证检查序列化,以确定哪些字段没有正确反序列化。

您还可以向支持选择加入标记的ServiceStack.Text项目提交拉取请求(即在JsConfig上)以更改行为以引发异常。