如何检查json字符串中是否存在NAN

how to check whether NAN is present in json string or not

本文关键字:字符串 是否 存在 NAN json 何检查 检查      更新时间:2023-09-26

假设我有下面的函数,它以jason的形式获取jsonData,我验证var jsonData以检查NaN?

function save() {
        var jsonData = getEnteredValue(); 
        $.ajax({
            type : 'POST',
            url : 'saveSalesForecast.json',
            data : 'jsonPostData=' + jsonData,
            success : function() { //alert("success");
            }
        });
    }

我只知道如何更换NAN,但不知道如何检查NAN!

jsonData = JSON.parse(jsonData.replace(/'bNaN'b/g, "null"));

剩下的函数是:(任何字段值都可以是字符串、数字,但不应该是NAN

  function getEnteredValue() {
    var rowIds = $("#salesForecastGrid").jqGrid('getDataIDs');
    var ids=[];
    var jsonPostData = "[";
    for ( var i = 0; i <= rowIds.length-1; i++) {
    $("#salesForecastGrid").jqGrid('editCell', i, 2, false);
        var forecastedSales = parseFloat($("#salesForecastGrid")
                .jqGrid('getCell', rowIds[i], 'forecastedSales'));
        if (!((forecastedSales == "") || isNaN(forecastedSales) || (forecastedSales ==0))) {
            if (ids.indexOf(rowIds[i])==-1){
                ids.push(rowIds[i]);
                }
            }
    }

    for ( var i = 0; i <= ids.length-1; i++) {
        var forecastedSales = parseFloat($("#salesForecastGrid")
                .jqGrid('getCell', ids[i], 'forecastedSales'));
        var id = $("#salesForecastGrid").jqGrid('getCell', ids[i],
                'id');
        var date = $("#salesForecastGrid").jqGrid('getCell',
                ids[i], 'day');
        if (id < 0) {
            id = 0;
        }
        var record = "{" + "id:" + id + "," + "date:" + date + ","
                + "forecastedSales:" + forecastedSales + "}";
        jsonPostData = jsonPostData + record;
        if (i != ids.length) {
            jsonPostData = jsonPostData + ",";
        }
    }
    jsonPostData += "]";
    return jsonPostData;
}

Json数据类:

"[{id:68447,date:04-17-2014,forecastedSales:8420.42},{id:68448,date:04-18-2014,‌​forecastedSales:9912.68},]"

您的问题是手动创建JSON,从而导致JSON无效。帮自己一个忙,使用JSON.stringify:

function getEnteredValue() {
    var rowIds = $("#salesForecastGrid").jqGrid('getDataIDs');
    var ids=[];
    var data = [];
    // ...

    for ( var i = 0; i < ids.length; i++) {
        // ...
        data.push(
           {id: id, date: date, forecastedSales: forecastedSales}
        );
    }
    return JSON.stringify(data);
}

由于NaN在JSON中不是有效值,因此它将自动转换为null。示例:

> JSON.stringify({a: NaN});
  "{"a":null}"

有关更多信息,请参阅使用本地JSON。

NaN在JSON中是不可接受的。JSON规范不支持将NaN作为值。即使javascript对象具有NaN值,当您串行化为JSON格式时,它也会转换为null

首先,JSON不是Javascript对象。JSON是所有语言都能理解的通用格式。