【问题标题】:Configure ServiceStack.Text to throw on invalid JSON配置 ServiceStack.Text 以抛出无效的 JSON
【发布时间】:2012-01-23 13:41:34
【问题描述】:

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

【问题讨论】:

    标签: json servicestack


    【解决方案1】:

    目前,ServiceStack 序列化程序针对弹性进行了优化,即尽可能多地反序列化而不会出错。

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

    您还可以向支持 opt-in 标志(即在 JsConfig 上)的 ServiceStack.Text 项目提交拉取请求,以更改引发异常的行为。

    【讨论】:

    • 好的,感谢您的回答并感谢您制作 ServiceStack :-)
    猜你喜欢
    • 2012-04-26
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2019-05-22
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多