javascript - 为什么 JSON 末尾会出现一个额外的元素?

标签 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个字符串组成的数组,而最后一个是',,,'。

为什么会有额外的值(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/

相关文章:

javascript - 为通过 Write() 添加的元素设置样式属性

javascript - 使用 jq 访问嵌套数组

php - 从YouTube API JSON响应(PHP)中随机选择一个视频

java - 如何在 Groovy 中将字符串作为属性传递。多级 JSON

javascript - 从服务器推送 websocket 数据后 Angularjs 模型发生变化

javascript - 古腾堡核心 block - 删除选项

iphone - 在 Objective-C 上使用嵌套 JSON 对象时遇到问题

Json 架构在 if 条件上添加属性

javascript - 使用 ng-click 从模式重定向并且数据关闭不起作用

javascript - 如何控制 CodeIgniter 中单击按钮时的发布表单数据