Pergunta

É possível lançar a biblioteca ServiceStack.Text ao tentar desserializar JSON inválido.Por padrão, parece que JSON inválido é simplesmente ignorado, de modo que o objeto de resultado contém valores nulos.

Quando tento desserializar este json (falta um "após MongoConnectionString)

{
"MongoDb": {
"MongoConnectionString:"mongodb://localhost:27017/x",
"MongoDatabase":"x",    
"MongoSafeModeEnabled":true, 
"MongoSafeModeFSync":true,
"MongoSafeModeWriteReplicationCount":
"MongoSafeModeWriteTimeout":"00:00:00"
},

fazendo isso:JsonSerializer.DeserializeFromString(json);onde

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;}
    }
}

Recebo um objeto Configuration onde MongoDbSettings é nulo.Eu preferiria obter uma exceção neste caso.Isso é possível?

Foi útil?

Solução

No momento, os serializadores ServiceStack estão otimizados para resiliência, ou seja,desserializar o máximo possível sem erros.

Eu recomendo adicionar algumas de suas próprias verificações de validação pós-serialização para descobrir quais campos não foram desserializados corretamente.

Você também pode enviar uma solicitação pull para o ServiceStack.Texto projeto que suporta um sinalizador de aceitação (ou seja,no JsConfig) para alterar o comportamento para lançar exceções.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top