【问题标题】:How to stringify JSON to JavaScript array如何将 JSON 字符串化为 JavaScript 数组
【发布时间】:2012-08-26 19:30:07
【问题描述】:

我在 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);

问题始终是 getstr 在这一点上已经切断了描述属性中单引号之后的所有内容。 我尝试了不同的方法来逃避它,但收效甚微。

【问题讨论】:

  • 作为参考,这不是有效的 JSON。字符串需要用双引号括起来,任何合规的 JSON 序列化器都会这样做。

标签: arrays json


【解决方案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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 1970-01-01
      相关资源
      最近更新 更多