JSON.parse错误....意外令牌{来自第2

时间:2014-09-29 13:30:15

标签: javascript json

首先调用我的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);

}

2 个答案:

答案 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);