Node.js:解析JSON对象

24

我收到了一个JSON对象,格式如下:

http.get(options, function(res) {
    res.on('data', function (chunk) {
        console.log('BODY: ' + chunk);
        var obj = JSON.parse(chunk);
        console.log(sys.inspect(obj));
    });
});

结果会打印:

BODY: [{"buck":{"email":"chris@example.com"}}]

但是现在我无法读取它内部的任何内容。如何获取"email"字段?

谢谢

1个回答

52

你应该做类似于如下的事情:

http.get(options, function(res){
    var data = '';

    res.on('data', function (chunk){
        data += chunk;
    });

    res.on('end',function(){
        var obj = JSON.parse(data);
        console.log( obj.buck.email );
    })

});

如果我没有错的话。


7
最终调用应为 res.on('end', function(err) { ... });。请参考 http://nodejs.org/docs/v0.4.8/api/http.html#event_end_。 - Kevin Decker
1
这似乎是从服务器获取JSON的很多工作。现在有没有任何节点来缩短这个过程...我认为jQuery宠坏了我$.get('url',function(d) { console.log(d); }); - Langdon
2
使用 data = [],然后使用 data.push(chunk),最后使用 JSON.parse(data.join('')) 更好吗?因为字符串是不可变的。 - King Friday
1
不是很准确,至少在V8中不是这样的。https://dev59.com/Pmw05IYBdhLWcg3wVwc4 - RobertPitt
@Langdon 这是完全通用的 - 只需编写此函数一次; 您可以将其用于每个响应,无论其在何处/什么位置,或者您对其进行了什么操作。 - OJFord
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接