JQuery:从JSON中提取Int总是返回NaN
我试图提取JSON对象的x和y值 这是从调试器中提取的原始JSON:JQuery:从JSON中提取Int总是返回NaN,jquery,json,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
"[{\"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) });
}
});
});
$(文档).ready(函数(){
var数据点=[];
$.getJSON(“/Home/GetData/”,函数(数据){
对于(var i=0;i您有一个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) });
}
});
$.getJSON(“/Home/GetData/”,函数(数据){
var jsData=json.Parse(data);//在这里解析。。。
对于(var i=0;i您需要添加
结果数据周围的jQuery.parseJSON()
像这样:
$.getJSON("/Home/GetData/", function (data) {
data = jQuery.parseJSON(data);
dataPoints= data;
});
但是您确实应该确保您的服务以Json而不是字符串的形式返回结果您检索了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
使用调试器检查从Ajax调用返回的“数据”的结构。它看起来像什么?上面粘贴在“这是我的原始JSON”下的数据是来自我的调试器。这正是我的脚本试图处理的。试试这个。它工作得很好。数组的元素似乎是要分析的字符串。嗨,Luca阅读了其他人的评论。我试图分析字符串而不是JSON对象,所以出现了一个问题。看看下面的答案,我应该提到,您不需要使用$.parseJSON
使用$.getJSON
时,因为回调是自动执行的。可能您的资源没有发送JSON
对象。这就是问题所在。解决方案是要么修复资源以发送JSON
,要么不使用$.getJSON
,而是使用常规的$.get
。完全正确。对我认为它是在解析一个Json对象,而不是字符串。谢谢!接受。阿米尔是第一个,但你的解决方案更干净。for循环是冗余的OP,Json.parse已经生成了一个对象。如果是,则会改变它