首先调用我的JSON.parse是成功的。但是从第二次调用,会发生意外的令牌错误。 我从stackoverflow中的搜索中找到了下面其他问题的一些解释。
"如果你再次解析它,它将首先执行toString-cast,这样你就可以解析类似" [object Object"]这样的东西来解释意外的令牌o"
我如何进行新的解析。我的代码如下所示。
var musicEntry="";
function parsing(){
...
for(var i=0;i<musicList.length;i++){
musicEntry=musicEntry+ '{"fileName":"'+musicList[i].title+'"},';
}
.....
var musicJsonObjString='{"music":['+ musicEntry +']}';
musicJsonObj=JSON.parse(musicJsonObjString);
}
答案 0 :(得分:1)
您需要删除数组中的最后一个逗号:
var musicJsonObjString='{"music":[' + musicEntry.substr(0, musicEntry.length - 1 ) + ']}';
答案 1 :(得分:1)
我建议使用JSON.stringify()而不是尝试编写自己的JSON编码器。虽然您的方法现在可以使用固定的尾随逗号问题,但您还需要防范音乐标题属性中的保留字符。
只需构建一个JavaScript对象(或数组)并将其提供给JSON.stringify(obj)
工作示例
var musicList = [{
title: 'foo'
}, {
title: 'bar'
}];
var array = [];
for (var i = 0; i < musicList.length; i++) {
array.push({fileName: musicList[i].title})
}
var musicJsonObjString = JSON.stringify({music: array});
var musicJsonObj = JSON.parse(musicJsonObjString);
console.log("music", musicJsonObj);