我如何JSON将网站的响应字符串化并将其保存到文件中

时间:2017-07-18 18:24:02

标签: javascript json node.js

我如何JSON对网站的响应进行字符串化并使用FS将JSON字符串化响应保存到文件中?

这是我的代码但它没有转换为JSON:

var request = require("request")
var fs = require('fs');
var url = "http://rubycp.me/"
var http = require('http');


var file = fs.createWriteStream("file.json");
var url = http.get("http://rubycp.me/", function(response) {
    JSON.stringify(response.pipe(file));
});
  

我只是想将页面的html转换为JSON并存储它   进入json文件。

4 个答案:

答案 0 :(得分:1)

response是一个不包含任何数据的流对象。您首先需要使用data事件收集流的所有数据。如果收集了所有数据,则会触发end事件,即使您可以对收集的数据进行字符串化并将其写入文件。

const fs = require('fs')
const http = require('http')

var url = 'http://rubycp.me/'

var file = fs.createWriteStream('file.json')

http.get(url, response => {
  // list that will hold all received chunks
  var result = []
  response
    .on('data', chunk => result.push(chunk)) // add received chunk to list
    .on('end', () => {
      file.write(JSON.stringify(Buffer.concat(result).toString())) // when all chunks are received concat, stringify and write it to the file
    })
})

答案 1 :(得分:-1)

将其更改为JSON.stringify(response.body).pipe(file) 我推荐这个:

var fs = require('fs');
var http = require('http');
var url = http.get("http://rubycp.me/", function(response) {
var dat="";
response.on("data", function(chunk) {
console.log("BODY: " + chunk);
dat+=chunk;});

var x = JSON.stringify(dat);
    fs.writeFile("file.json", x, function(err) {
    if(err) {
        return console.log(err);
    }

    console.log("The file was saved!");
 });
 }); 

答案 2 :(得分:-1)

这种情况正在发生,因为您正在尝试将response对象写入文件,而不是response.body,这是JSON实际驻留的位置。试试这个:

var request = require("request")
var fs = require('fs');
var url = "http://rubycp.me/"
var http = require('http');


var url = http.get("http://rubycp.me/", function(res) {
    res.on("data", function(chunk) {
        console.log("BODY: " + chunk);

        fs.writeFile("file.json", JSON.stringify(chunk), function(error) {
            if (error) { return console.err(error) }
            console.log('File was saved successfully');
        });
    });
});

答案 3 :(得分:-3)

在你进行字符串化之前,看起来你正在使用这个文件。回应。