"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso fazer as exceções do JSON.NET para que a falta de campos durante a desserialização?

Como posso fazer as exceções do JSON.NET para que a falta de campos durante a desserialização?

Publicado em 2025-01-29
Navegar:241

How Can I Make Json.NET Throw Exceptions for Missing Fields During Deserialization?

usa json.net para detectar os campos ausentes ausentes durante o json de Back -Sequentionalization

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 (corretoData, Configurações); Console.WriteLine (Goodobj.myjsonint.toString ()); var badobj = jsonConvert.DeSerializeObject (ingdata, configurações); Console.WriteLine (badobj.myjsonint.toString ()); } Catch (Exceção Ex) {{ Console.WriteLine (Ex.GetType (). Nome ":" Ex.Message); }

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.

Tutorial mais recente Mais>

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