J'ai le code suivant:
return (DataTable)JsonConvert.DeserializeObject(_data, (typeof(DataTable)));
Ensuite, j'ai essayé:
var jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
return (DataTable)JsonConvert.DeserializeObject<DataTable>(_data, jsonSettings);
La ligne de retour renvoie l'erreur:
{"Erreur lors de la conversion de la valeur \"\"en type 'System.Double'."}
Beaucoup de solutions en ligne suggèrent de créer Class
personnalisé avec des types nullables, mais cela ne fonctionnera pas pour moi. Je ne peux pas m'attendre à ce que le JSON soit dans un certain format. Je n'ai aucun contrôle sur le nombre de colonnes, le type de colonne ou les noms de colonnes.
Vous pouvez fournir des paramètres à JsonConvert.DeserializeObject
pour lui dire comment gérer les valeurs NULL, dans ce cas, et bien plus encore:
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
Vous pouvez vous abonner à l'événement 'Error' et ignorer les erreurs de sérialisation si nécessaire.
static void Main(string[] args)
{
var a = JsonConvert.DeserializeObject<DataTable>("-- JSON STRING --", new JsonSerializerSettings
{
Error = HandleDeserializationError
});
}
public static void HandleDeserializationError(object sender, ErrorEventArgs errorArgs)
{
var currentError = errorArgs.ErrorContext.Error.Message;
errorArgs.ErrorContext.Handled = true;
}