2

我正在使用 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。

4

3 回答 3

7

这个怎么样:

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

JSON.stringify(obj);
于 2013-07-16T10:12:49.100 回答
4

也许我错过了一些东西,但这很好用:

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

节点@0.10.13

于 2013-07-16T10:17:47.887 回答
0

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

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

于 2013-12-02T15:26:21.220 回答