为什么我最后在JSON中获得了额外的元素?

时间:2011-09-23 23:07:53

标签: javascript json

我正在使用某个网站,并且正在使用JSON。我的问题是JSON.parse方法,我用它来发送一个简单的数组,并将值附加到数组中。我总是得到一个额外的元素,我们只是逗号。这是简化的代码:

responseText = '["dummy1", "dummy2", "dummy3", "dummy4"]';
var  clientList=[];
try {
    JSON.parse(responseText, function(key, val){clientList.push(val)});
} catch (e) {
    alert('no');
}

alert(clientList.length);

首先在IE中它根本不起作用(抛出异常)。

第二个chrome结果是clientList是一个包含5个字符串的数组,而最后一个是',,,'。

为什么那里有额外的价值?我可以摆脱它(不只是在最后弹出阵列)? IE有什么问题?

2 个答案:

答案 0 :(得分:4)

这将有效:

responseText = '["dummy1", "dummy2", "dummy3", "dummy4"]';
var  clientList=[];
try {
    clientList = JSON.parse(responseText);
} catch (e) {
    alert('no');
}

IE在浏览器中没有JSON作为默认值。你需要一个像json2这样的库。

至于你的问题,那个回调函数实际上是为了转换你的对象而不是构建它。例如:

var transformed =
JSON.parse('{"p": 5}', function(k, v) { if (k === "") return v; return v * 2; });
// transformed is { p: 10 }

来自parse

答案 1 :(得分:0)

在不同浏览器下使用JSON存在差异。一种方法是做IAbstractDownvoteFactory所说的。另一种方法是使用jQuery库和

clientList = $.parseJSON(responseText);

应该在任何浏览器下完成这项工作(虽然我没有在IE下测试它)。