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

Javascript 如何将网站的响应字符串化并保存到文件中,javascript,json,node.js,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://

如何使用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文件


在“字符串化”响应之前,您似乎正在通过管道连接到文件。

将其更改为
JSON.stringify(response.body).pipe(文件)

我建议:

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!");
 });
 }); 

发生这种情况是因为您试图将
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');
        });
    });
});

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
    })
})

刚刚按以下顺序更改:
JSON.stringify(文件)
response.pipe(文件)未按该顺序工作,您正在对文件进行“字符串化”,然后再将任何内容导入其中@Shubham为您提供了正确的代码。这不是一个说明如何解决问题的答案,它只是一个说明为什么它不起作用的注释。它会在那里,因为您无法严格化响应。你可能正在寻找stringify response.body我已经遇到了samr问题并试图找到解决方案我读了很多博客网站等。我找不到任何解决方案。是的,尝试stringify req.body你不能stigify completr req object我真的不知道如何将其添加到我的代码中。我在哪里添加这个?我尝试了一下,但在我的文件中收到了“未定义”。jsonNope我们无法将循环对象转换为strigify。您想将网站内容转换为json还是从json转换?我使用through2先收集所有流,然后在解析后保存。您希望从HTML文档中获得什么json输出?一个大字符串?需要另一个
})
并在json文件中存储
未定义的
,这是因为您试图解析的URL不是json。为什么我要对json文件进行json字符串化?“我如何对网站的响应进行json字符串化,并使用FS将json字符串化的响应保存到文件中?”您告诉meThis,如果数据以多个数据块传输,它将不起作用,因为这样会导致数据不完整或损坏。这正是我想要的!非常感谢您的帮助和努力!