在我的代码中,当我尝试加载json文件的内容然后记录json对象中每个对象的Name
属性时,我没有收到任何记录
这是我的代码,感谢所有帮助,谢谢。
var options = {
host: 'www.roblox.com',
port: 80,
path: '/catalog/json?resultsperpage=42',
method: 'GET'
};
http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
chunk = JSON.parse(chunk);
for (var x in chunk) {
console.log(chunk[x]['Name']);
}
//console.log(chunk);
});
}).end();
答案 0 :(得分:3)
当您在Node.js中发出请求时,无法保证所有数据都会包含在一个块中,因此您需要从请求块中构建结果,直到您确定自己拥有所有数据为止。他们(即end
事件)。请尝试使用以下代码:
var options = {
host: 'www.roblox.com',
port: 80,
path: '/catalog/json?resultsperpage=42',
method: 'GET'
};
http.request(options, function(res) {
res.setEncoding('utf8');
var result = "";
res.on('data', function (chunk) {
result += chunk;
});
res.on('end', function() {
result = JSON.parse(result);
for (var x in result) {
console.log(result[x]['Name']);
}
console.log(result);
});
}).end();
有关如何在Node.js中发出HTTP请求的更多信息,请参阅this article。
答案 1 :(得分:1)
完整工作版
var http = require('http');
var options = {
host: 'www.roblox.com',
port: 80,
path: '/catalog/json?resultsperpage=42',
method: 'GET',
headers: { // note how you add headers
'content-type': 'application/json'
}
};
http.request(options, function(res) {
res.setEncoding('utf8');
var result = ""; // result will be built up into this
res.on('data', function (chunk) {
result += chunk; // add the chunk to the result
}).on('end', function() { // now parse it and do things
var json = JSON.parse(result);
for (var x in json) {
console.log(json[x]['Name']);
}
//console.log(chunk);
});
}).end();
答案 2 :(得分:1)
您的JSON解析无法正常工作的原因是因为您在“数据”期间过早地调用了这个数据'事件。它只是在那时发送响应块,并且你没有完整的响应(这是应该是有效JSON的文本)。你的工作是否结束了#39;事件
var http = require('http');
var options = {
'host': 'www.roblox.com',
'port': 80,
'path': '/catalog/json?resultsperpage=42',
'method': 'GET',
'content-type': 'application/json'
};
http.request(options, function(res) {
var response_string = "";
res.setEncoding('utf8');
res.on('data', function (chunk) {
response_string += chunk;
});
res.on('end', function() {
var chunk = JSON.parse(response_string);
for (var x in chunk) {
console.log(chunk[x]['Name']);
}
console.log(chunk);
});
}).end();