Configure ServiceStack.Text para lançar JSON inválido
-
12-11-2019 - |
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?
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.