Obtenir un json via Http Request dans NodeJS

Voici mon modèle avec une réponse json:

exports.getUser = function(req, res, callback) { User.find(req.body, function (err, data) { if (err) { res.json(err.errors); } else { res.json(data); } }); }; 

Ici, je l’obtiens via http.request. Pourquoi est-ce que je reçois (données) une chaîne et non un json?

  var options = { hostname: '127.0.0.1' ,port: app.get('port') ,path: '/users' ,method: 'GET' ,headers: { 'Content-Type': 'application/json' } }; var req = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function (data) { console.log(data); // I can't parse it because, it's a ssortingng. why? }); }); reqA.on('error', function(e) { console.log('problem with request: ' + e.message); }); reqA.end(); 

Comment puis-je obtenir un json?

http envoie / reçoit des données en tant que chaînes de caractères … c’est comme ça. Vous cherchez à parsingr la chaîne en json.

 var jsonObject = JSON.parse(data); 

Comment parsingr JSON en utilisant Node.js?

Dites simplement que vous utilisez json: true et oubliez l’en-tête et l’parsing

 var options = { hostname: '127.0.0.1', port: app.get('port'), path: '/users', method: 'GET', json:true } request(options, function(error, response, body){ if(error) console.log(error); else console.log(body); }); 

et même pour post

 var options = { hostname: '127.0.0.1', port: app.get('port'), path: '/users', method: 'POST', json: {"name":"John", "lastname":"Doe"} } request(options, function(error, response, body){ if(error) console.log(error); else console.log(body); }); 

Juste en définissant l’option json sur true , le corps contiendra le json analysé:

 request({ url: 'http://...', json: true }, function(error, response, body) { console.log(body); });