2013-07-16 66 views
2

我使用Node.js和express(3.x)。我必须为mac客户端提供一个API,并从提交请求中提取正确的字段。 (使用request.param是强制性的)但是这些字段应该一起组成JSON而不是字符串。将字符串转换为JSON对象数组(Node.js)

我:

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

和request.param( '项目')包含对象的数组,但仍然为一个字符串:

'[{"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。

回答

6

如何:

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

JSON.stringify(obj); 
+0

感谢您回答如此(非常)快,做了诀窍 – emiel187

4

也许我失去了一些东西,但是这工作得很好:

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

[email protected]

+0

解析数组也适用于我。不知道OP在做什么。 – Amberlamps

0

可能是你的老图书馆原型。当我删除它时,bug已经消失。

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

相关问题