Получая данные JSON через http.request, я могу получать данные порциями, которые я помещаю в массив.когда сигнализируется конец запроса, я объединяю массив с помощью buffer.concat, а затем json.parse этот объект, который дает мне строку.Затем я должен снова json.parse эту строку, чтобы получить объект json.Почему я должен json.parse дважды?Есть ли лучший способ для достижения действительного объекта JSON?Вот мой код:
// requires Node.js http module
var http = require('http');
var options = {
"method" : "GET",
"hostname" : "localhost",
"port" : 3000,
"path" : `/get`
};
var req = http.request(options, function (res) {
var chunks = [];
console.log(res.statusCode);
res.on("data", function (chunk) {
// add each element to the array 'chunks'
chunks.push(chunk);
});
// adding a useless comment...
res.on("end", function () {
// concatenate the array
// iterating through this object spits out numbers (ascii byte values?)
var jsonObj1 = Buffer.concat(chunks);
console.log(typeof(jsonObj1));
// json.parse # 1
// iterating through this string spits out one character per line
var jsonObj = JSON.parse(jsonObj1);
console.log(typeof(jsonObj));
// json.parse # 2
// finally... an actual json object
var jsonObj2 = JSON.parse(jsonObj);
console.log(typeof(jsonObj2));
for (var key in jsonObj2) {
if (jsonObj2.hasOwnProperty(key)) {
var val = jsonObj2[key];
console.log(val);
}
}
});
});
req.on('error', (e) => {
console.error(`problem with request: ${e.message}`);
});
req.end();