Na sequencialização de JSON, é importante lidar com os campos ausentes. Por padrão, o serializador do JSON.NET retornará silenciosamente ao silêncio ao encontrar campos ausentes. Esse comportamento pode levar a erros ilimitados quando um objeto com atributos incorretos de profundidade.
pergunta:
você encontra um problema, ou seja, os serializadores json.net não lançarão anormalidades quando os objetos que não têm campos não têm campos. Em vez disso, ele retorna valor silencioso, o que dificulta a detecção de dados incorretos.
solução:
json.net fornece um configurável missionMemberHandling Settings. Ao defini -lo como
error, você pode indicar que o serializador causa jSOnserializationException
ao encontrar campos ausentes durante o período de desertificação. Dessa forma, você pode lidar explicitamente a esses erros no código.
code:
usando newtonsoft.json;
tentar
{{
// Leia a corda JSON
Const string corretoData = @"{'myjsonint': 42}";
Const string erradodata = @"{'algumteroproperty': 'fbe8c20b'}";
// Crie configurações de serializador
JsonserializerSettings Settings = new jsonserialAtetngs ();
Settings.MissingMemberHandling = MissingMemberHandling.Error;
// Objeto de sequencialização reversa
var gotobj = jsonConvert.DeSerializeObject
Saída:
42 JSOnserialionionExceuon: não conseguiu encontrar o membro 'alguma propósito' no objeto do tipo 'MyjsonObjview'.using Newtonsoft.Json;
try
{
// 读取JSON字符串
const string correctData = @"{ 'MyJsonInt': 42 }";
const string wrongData = @"{ 'SomeOtherProperty': 'fbe8c20b' }";
// 创建序列化器设置
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MissingMemberHandling = MissingMemberHandling.Error;
// 反序列化对象
var goodObj = JsonConvert.DeserializeObject(correctData, settings);
Console.WriteLine(goodObj.MyJsonInt.ToString());
var badObj = JsonConvert.DeserializeObject(wrongData, settings);
Console.WriteLine(badObj.MyJsonInt.ToString());
}
catch (Exception ex)
{
Console.WriteLine(ex.GetType().Name ": " ex.Message);
}
ERRO , garantimos que o serializador jogue fora o objeto da falta de campos jsonserizationException permite lidar com erros e verifique se essa cerâmica de dados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3