c# - 当字符串包含空值(“NaN”)时,JsonConvert.DeserializeObject 失败
问题描述
我将数据发布到通过淘汰赛字符串化的控制器:
var data = ko.toJSON(viewModel);
$.ajax({
type: 'POST',
url: '@Url.Action("Action")',
data: { data: data },
dataType: 'json'
....
})
然后在服务器端,我尝试使用 JsonConvert 反序列化数据。
var viewModel = JsonConvert.DeserializeObject<ViewModel>(data,
new JsonSerializerSettings
{
DateTimeZoneHandling = DateTimeZoneHandling.Local,
DateFormatHandling = DateFormatHandling.IsoDateFormat
});
如果数据包含空值(序列化为“NaN”),则会失败,如下所示:
"MyField":"NaN"
没有空值,它工作正常。
我尝试将NullValueHandling = NullValueHandling.Include/Ignore添加到序列化程序设置中,但均未成功。
解决方案
我通过向淘汰赛字符串化器添加一个小的替换函数来解决这个问题(正如 DavidG 所建议的那样——谢谢,我应该从一开始就完成这项工作)。
var data = ko.toJSON(viewModel, function (key, value) {
if (value == "NaN") {
return;
}
else {
return value;
}
});
推荐阅读
- java - 'psql' 命令在终端中不断给出错误
- javascript - ReferenceError: XMLHttpRequest 未在 emailjs 中定义
- angular - 如何在Angular Material Datepicker中从今天的日期中移除焦点?
- mysql - Mysql 优化 MIN、MAX 和 SUM 的索引开销
- linkedin - 如何使用linkedin API获取特定linkedin直播视频的当前观众数量?
- javascript - 嗨,我正在处理 Yaws 网络套接字连接问题
- r - 在 R 中计算求和分数的序列
- regex - 正则表达式删除尾随可选垃圾
- grpc-c++ - 为什么生成的请求是常量。移动 protobuf 字符串
- python - 我不断收到 [错误] [图片] 未找到
object.jpg 位于项目文件夹中。其他一切都很好