无法获取密钥:来自Json数组的值

时间:2016-10-08 19:20:21

标签: javascript json node.js

我从我的node.js服务器发送请求,在控制台中我正在尝试打印响应数据。当我尝试打印Json数组时。它很好。就像这样 -

{"id":1,"name":"Asm Arman","confirmed":0,"confirmation_code":null,"created_at":"2016-09-29 16:34:39","updated_at":"2016-10-04 06:55:30"}

使用此 -

var request = require('request');
var app = require("express")();

app.get('/', function(req, res){
request.get('http://localhost:8000/api', function(err, response, body){

***res.send(body);
console.log(body);***

});
});

app.listen(8081);

但我无法打印 键:值 对。我正在 undefined 。这是我的Js文件

var request = require('request');
var app = require("express")();

app.get('/', function(req, res){
request.get('http://localhost:8000/api', function(err, response, body){
var string=JSON.parse(body);
res.send(string.name);
console.log(string.name);

});
});

app.listen(8081);

不仅Json.parse()我还使用了Json.stringify()。但没有运气。

3 个答案:

答案 0 :(得分:1)

为了解析请求的正文,您需要使用默认情况下未安装Express的body-parser。它将允许您处理使用JSON,URL编码的表单值或文本格式化的正文。

npm install body-parser --save

然后将以下内容添加到您的代码中。

var bodyParser = require('body-parser');

// place this before your routes
app.use(bodyParser.json())

答案 1 :(得分:0)

看看here,这是一个基本的例子。我不得不查看文档以了解get方法的工作原理,因为我认为它类似于自动解析响应体的示例。

简短而瘦的是节点中的请求和响应对象是流。当数据流进入时,它会触发data事件,该事件将为您提供数据块,您可以捕获这些数据并将其附加在一起以获取请求或响应的正文。

因此,您的代码将类似于:

let body = '';
http.get('url', (res) => { 
  res.on('data', (chunk) => body += chunk);
  res.on('end', () => { 
    // now the body variable is prepared and you can do something with it 
  }
  res.on('error', err => {
    // Handle errors 
  }
});

数据作为缓冲区以块的形式出现,因此需要转换为字符串,然后解析它以使用它。所以,像这样:

JSON.parse(body.toString());

答案 2 :(得分:0)

您是否100%确定这不仅仅是console.log输出您的对象的方式?也许request为你解析了JSON。