JQuery:从JSON中提取Int总是返回NaN

时间:2014-11-25 14:53:45

标签: jquery json

我正在尝试提取JSON对象的x和y值。

这是我从调试器中提取的原始JSON:

"[{\"x\":10,\"y\":10},{\"x\":20,\"y\":10},{\"x\":70,\"y\":10},{\"x\":80,\"y\":10},{\"x\":90,\"y\":10}]"

这是我处理它的代码

$(document).ready(function () {

    var dataPoints = [];

    $.getJSON("/Home/GetData/", function (data) {

        for (var i = 0; i <= data.length - 1; i++) {
            dataPoints.push({ x: parseInt(data[i].x), y: parseInt(data[i].y) });
        }

    });

});

每个元素都按预期处理为dataPoints但是所有值都包含NAN而不是预期的值。

3 个答案:

答案 0 :(得分:1)

你有一个json字符串,你需要将它解析为json,然后处理数字:

var str = "[{\"x\":10,\"y\":10},{\"x\":20,\"y\":10},{\"x\":70,\"y\":10},{\"x\":80,\"y\":10},{\"x\":90,\"y\":10}]";

console.log(str[0]); // [
console.log(str[1]); // {
var json = JSON.parse(str);
console.log(json[0].x);

您的代码:

$.getJSON("/Home/GetData/", function (data) {
       var jsData = json.Parse(data); // parse here...
        for (var i = 0; i <= data.length - 1; i++) {
            dataPoints.push({ x: parseInt(jsData[i].x), y: parseInt(jsData[i].y) });
        }

 });

JSFIDDLE

答案 1 :(得分:1)

您需要添加 你周围的jQuery.parseJSON()结果数据

像这样:

$.getJSON("/Home/GetData/", function (data) {
        data = jQuery.parseJSON(data);
        dataPoints= data;
    });

但是你真的应该确保你的服务以Json而不是字符串

的形式返回结果

答案 2 :(得分:1)

您检索了JSON但是您不需要创建自己的解析函数:

var dataPoints = [];
var test = "[{\"x\":10,\"y\":10},{\"x\":20,\"y\":10},{\"x\":70,\"y\":10},{\"x\":80,\"y\":10},{\"x\":90,\"y\":10}]";
var data = JSON.parse(test);

data
[Object { x=10, y=10}, Object { x=20, y=10}, Object { x=70, y=10}, Object { x=80, y=10}, Object { x=90, y=10}]

data[0]['x']
10