JsonConvert.DeserializeObject завершается ошибкой, когда строка содержит нули («NaN») - PullRequest
0 голосов
/ 16 мая 2018

Я отправляю данные на контроллер, зашифрованный по нокауту:

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 к настройкам сериализатора, оба безуспешно.

1 Ответ

0 голосов
/ 17 мая 2018

Я обошел проблему, добавив небольшую функцию заменителя к строковому классификатору (как предложено DavidG - спасибо, я должен был сделать эту работу с самого начала).

var data = ko.toJSON(viewModel, function (key, value) { 
    if (value == "NaN") {
        return;
    }
    else {
        return value;
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...