2013-07-16 4 views
2

Я использую Node.js и express (3.x). Я должен предоставить API для mac-клиента, и из почтового запроса я извлекаю правильные поля. (Использование 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

Может быть у вас есть старые библиотеки Опытный образец. Когда я удаляю его, ошибка исчезла.

Вы можете попробовать этот же код. Однажды на странице с Prototype.js. Второй раз на новой странице без библиотеки.

Смежные вопросы