我正在某个网站上工作,并且正在使用 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个字符串组成的数组,而最后一个是',,,'。
为什么会有额外的值(value)呢?我可以摆脱它(而不只是在最后弹出数组)吗? IE 有什么问题吗?
最佳答案
这会起作用:
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
关于javascript - 为什么 JSON 末尾会出现一个额外的元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7535724/