2016-12-24 3 views
0

Я пытаюсь выполнить два разных запроса проекта. Я запросить с помощью запроса модуля другого проекта с помощью экспресс-но JSon ошибка синтаксического анализа в экспресс-проектедва разных запроса проекта json parse error

пример объекта

var data= { 
    User: { 
     ID: 123 
    }, 
    Text: 'hello world' 
}; 

request.post({ 
      headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
      url: "url/test", 
      body: JSON.stringify(data) 
     }, function (error, response, body) { 

      logger.debug("error : ", error); 
      logger.debug("body : ", body); 

     }); 

Слушайте с экспресс-проект

app.post('/test', function(req, res) { 

    try { 
     res.header('Access-Control-Allow-Origin', req.headers.origin || "*"); 
     res.header('Access-Control-Allow-Methods', 'POST'); 
     res.header('Access-Control-Allow-Headers', 'Content-Type'); 

     console.log(req.body); 
     var x = JSON.parse(req.body); 

     res.send(200); 

    } catch (error) { 

     res.send(200); 
    } 
}); 

req.body является

{'{"Пользователь": {"ID": 123}, "Текст": "hello world"}' : ''}

Erorr является

SyntaxError: Неожиданный токен о в формате JSON в положении 1

бьет дополнительные одинарные кавычки { «{ "Пользователь": { "ID": 123}, "Текст": "привет мир" } ':' '}

+0

Я думаю, что его же проблема с этим вопросом http://stackoverflow.com/questions/10005939/how-to-consumume-json-post-data-in-an-express-application В принципе, вам нужно, чтобы bodyParser разбирал тело json – PunNeng

+0

благодаря пуннэнгу, но bodyparse на моем коде – anotherbuild

ответ

0

req.body - объект, а не простая строка. Интерпретатор Javascript уже проанализировал его. Вот почему вы видите таинственное сообщение Unexpected token o in JSON at position 1, несмотря на отсутствие «o» в JSON; JSON.parse пытается выполнить операцию строки в строке, отличной от строки.

0

вы должны добавить некоторые параметры к экспресс-приложения конфигурации и установить тело-парсер пакет с помощью npm install body-parser так:

var bodyParser = require('body-parser'); 
app.use(bodyParser.json({ 
keepExtensions: true 
})); 
app.use(bodyParser.urlencoded()); 
+0

Я так пробовал // Body Parser app.use (bodyParser.json()); // для поддержки JSON-закодированных тел app.use (bodyParser.urlencoded ({ // для поддержки тел, закодированных по URL-адресу extended: true })); // Body Parser end Я попробую ваш метод. я пишу результат – anotherbuild

+0

извините без изменений :( – anotherbuild

+0

использовать 'JSON.parse (JSON.stringify ((req.body))' для разбора значения json – farhadamjady