JS字符串拼接JSON问题

第一种种拼接json的key会过滤双引号

    var arr = "sequence" + ":" + "[";
    let arrEnd = "]";
    for(let i=0;i<[1,2,3].length;i++){
      arr += "{" +"sequence" + ":" + [1,2,3][i] + "," + "process" + "[" + [[1,2,3],[2,4],[5,4]][i]+"]"+"}"+",";
    }
    let arrs = '{' + arr.substring(0,arr.length-1)+arrEnd + '}';
    console.log(arrs);//{sequence:[{sequence:1,process[1,2,3]},{sequence:2,process[2,4]},{sequence:3,process[5,4]}]}
    

第二种拼接数组[1,2,3]会被当字符串处理

    var arr = "sequence" + ":" + "[";
    let arrEnd = "]";
    for(let i=0;i<[1,2,3].length;i++){
      arr += "{ \"sequence\": [1,2,3][i], \"process\": [[[1,2,3],[2,4],[5,4]][i]]}"+",";
    }
    let arrs = JSON.stringify('{' + arr.substring(0,arr.length-1)+arrEnd + '}');
    console.log(JSON.parse(arrs)); /*{sequence:[{ "sequence": [1,2,3][i], "process": [[[1,2,3],[2,4],[5,4]][i]]},{ "sequence": [1,2,3][i], "process": [[[1,2,3],[2,4],[5,4]][i]]},{ "sequence": [1,2,3][i], "process": [[[1,2,3],[2,4],[5,4]][i]]}]}*/

求一种拼接完能和json格式一样的方法,然后要能取的到值

阅读 8k
1 个回答

采用字符串拼接的话,稍微复杂一点的json就很有可能会出问题的,无法避免。

需要json串的话,为什么一定要拼接字符串呢?

我觉得你可以换一种思维:构造你想要的实例对象obj,然后使用JSON.stringify(obj)。

这样可以保证获取到的字符串肯定是一个json串,并且不用担心JSON.parse类型转换后变化。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题