如何将JSON字符串化为JavaScript数组

时间:2009-06-07 17:50:43

标签: arrays json

我在html DOM中的表单是一个单击的复选框(可以有多个)。当我使用撇号时,问题出现在描述字符串中,因为我的列表对象是单引号删除的。这是表单中的复选框之一:

<input type="checkbox" id="cbx" name="cbx" value="{'getPic': 'url', 'picsrc': 'http://lh3.ggpht.com/_ZB3cttqooN0/SVmJPfusGWI/AAAAAAAADvA/GuIRgh6eMOI/Grand%20Canyon%201213_121508214.JPG', 'pos': None, 'description': 'Here's what it REALLY looks like at 5:30am!  Bring your headlight!'}">

读取已选中复选框值的javascript并将其推送到数组(列表)中:

var pylist = [];
    for (i=0; i<document.picList.cbx.length; i++) {

           if (document.picList.cbx[i].checked) {
              pylist.push( document.picList.cbx[i].value );
           }
    }

var getstr = JSON.stringify(pylist);

问题始终是,在描述属性中的单引号之后,此时的gettr已经切断了。 我已经尝试了不同的方法来逃避它。但

2 个答案:

答案 0 :(得分:1)

问题是复选框的值已经是JSON字符串。一种解决方案是在值上调用JSON.parse():

var pylist = [];
    for (i=0; i<document.picList.cbx.length; i++) {

           if (document.picList.cbx[i].checked) {
              pylist.push( JSON.parse( document.picList.cbx[i].value) );
           }
    }

var getstr = JSON.stringify(pylist);

答案 1 :(得分:0)

我遇到了同样的问题 - 我们将json粘贴在隐藏字段中,这样我们就不必在每个页面上查询服务器了。我们在放入html之前用“代码”替换撇号 - 我们添加了一个用撇号替换代码的javascript函数。

真的很hacky,但它确实很好用。当然,我们在代码中有一个地方从服务器获取json,javascript需要解析它的一个地方 - 如果你发现你在整个代码中重复这些方法,你的里程会有所不同。