【问题标题】:Convert String to Array of JSON Objects (Node.js)将字符串转换为 JSON 对象数组 (Node.js)
【发布时间】:2013-07-14 11:11:28
【问题描述】:

我正在使用 Node.js 和 express (3.x)。我必须为 mac 客户端提供 API,并从发布请求中提取正确的字段。 (request.param 的使用是强制性的)但是这些字段应该组合回 JSON,而不是字符串。

我明白了:

var obj = {
        "title": request.param('title'),
        "thumb": request.param('thumb'),
        "items": request.param('items')
    };

并且 request.param('items') 包含一个对象数组,但仍然是一个字符串:

'[{"name":"this"},{"name":"that"}]'

我想把它追加成:

var obj = {
            "title": request.param('title'),
            "thumb": request.param('thumb'),
            "items": [{"name":"this"},{"name":"that"}]
        };

代替

var obj = {
                "title": request.param('title'),
                "thumb": request.param('thumb'),
                "items": "[{\"name\":\"this\"},{\"name\":\"that\"}]"
            };

谁能帮我解决这个问题? JSON.parse 不解析对象数组,只解析有效的 JSON。

【问题讨论】:

    标签: javascript json node.js express


    【解决方案1】:

    这个怎么样:

    var obj = JSON.parse("{\"items\":" + request.param('items') + "}");
    obj.title = request.param('title');
    obj.thumb = request.param('thumb');
    
    JSON.stringify(obj);
    

    【讨论】:

      【解决方案2】:

      也许我遗漏了一些东西,但这很好用:

      > a = '[{"name":"this"},{"name":"that"}]';
      '[{"name":"this"},{"name":"that"}]'
      > JSON.parse(a)
      [ { name: 'this' }, { name: 'that' } ]
      

      节点@0.10.13

      【讨论】:

        【解决方案3】:

        可能你有旧的库原型。当我删除它时,错误消失了。

        您可以尝试相同的代码。使用 Prototype.js 进入页面。第二次在没有库的新页面中。

        【讨论】:

          猜你喜欢
          • 2011-08-19
          • 2013-08-29
          • 2021-06-12
          • 2012-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多