在我的浏览器中执行url时我有这个:
[{
"id": "1234",
"name": "Carl",
"age": "17"
}, {
"id": "9876",
"name": "Jhon",
"age": "19"
}]
我有这个功能:
function get(callback) {
return $.ajax({
type: "GET",
// url: 'rest/cars/list',
url: 'my url',
dataType: "json",
context: this,
success: function (response) {
callback.call(this, response);
}
});
};
我的代码是:
var pos = get();
var ob = JSON.parse(pos);
var arr = [];
for (var i in ob) {
if (ob.hasOwnProperty(i)) {
arr.push(ob[i]);
alert(arr[i]);
}
}
我需要知道如何将JSON转换为数组,所以我将:
arr[0].id = 1234
...等 我的代码不工作我有这个错误SyntaxError:意外的令牌o ... 我迫不及待地想解决这个问题
答案 0 :(得分:0)
这里的JSON无效:
[{
id: "1234",
name: "Carl",
age: "17", //this is invalid
}, {
id: "9876",
name: 'Jhon',
age: "19"
}]
这是一个有效的版本:
[{
"id": "1234",
"name": "Carl",
"age": "17"
},
{
"id": "9876",
"name": "Jhon",
"age": "19"
}]
您可以在此处验证:JSONLint
答案 1 :(得分:0)
试试此代码
var obj=[{
id: "1234",
name: "Carl",
age: "17",
}, {
id: "9876",
name: 'Jhon',
age: "19"
}];
for(var i=0;i<obj.length;i++)
{
alert(obj[i]['age']);
alert(obj[i]['id']);
alert(obj[i]['name']);
}
答案 2 :(得分:0)
试试这个
var json_data = your correct json data here
var result = [];
for(var i in json_data)
result.push([i, json_data [i]]);
var data = new google.visualization.DataTable();
data.addColumn('number', 'ID');
data.addColumn('string', 'Name');
data.addColumn('number', 'Age');
data.addRows(result);
答案 3 :(得分:0)
Javascript的JSON解析器非常严格,您的JSON无效
所有对象键都必须是双引号,并且不能混用和匹配'Jhon'
之类的单/双引号。
[
{
"id": "1234",
"name": "Carl",
"age": "17"
},
{
"id": "9876",
"name": "Jhon",
"age": "19"
}
]
答案 4 :(得分:0)
调用get()
函数的方法无效。 get()
方法需要一个未提供的回调函数。此外,get()
函数返回的值是一个jQuery对象。不是您从服务器获得的响应。请参考以下实现。
在成功功能中进行以下更改:
function get(callback) {
return $.ajax({
type: "GET",
// url: 'rest/cars/list',
url: 'my url',
dataType: "json",
context: this,
success: function (response) {
callback(response);
}
});
};
按如下方式调用get()方法:
get(function(pos){
var ob = pos;
var arr = [];
for (var i in ob) {
if (ob.hasOwnProperty(i)) {
arr.push(ob[i]);
alert(arr[i]);
}
}
});
希望这会对你有所帮助。