私は次のコードを持っています:
return (DataTable)JsonConvert.DeserializeObject(_data, (typeof(DataTable)));
次に、私は試しました:
var jsonSettings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore
};
return (DataTable)JsonConvert.DeserializeObject<DataTable>(_data, jsonSettings);
戻り行はエラーをスローしています:
{"値\"\"をタイプ 'System.Double'に変換中にエラーが発生しました。"}
Null可能な型を持つカスタムClass
を作成することを提案するオンラインのソリューションがたくさんありますが、これはうまくいきません。 jsonが特定の形式になるとは期待できません。列数、列タイプ、または列名を制御することはできません。
JsonConvert.DeserializeObject
に設定を指定して、null値の処理方法(この場合)などを伝えることができます。
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore
};
var jsonModel = JsonConvert.DeserializeObject<Customer>(jsonString, settings);
「エラー」イベントにサブスクライブし、必要に応じてシリアル化エラーを無視できます。
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;
}