创造一个可读的' JSON格式

时间:2018-04-18 05:49:39

标签: javascript node.js http

使用Node.js并且对软件来说还是新手。然而,这是我在香草前端时代所困扰的事情。我有一个简单的html.get流

https.get(url, (res)=>{
    res.setEncoding('utf8');
    let body = '';
    res.on('data', (data)=>{
        body += data;
    });

    res.on('end', ()=>{
        body = JSON.parse(body);
        //console.log(typeof body);
        callback(body);
    })
})

使用回调函数将文件返回到我的网页

 function callback(body){
    res.send(body);
}

我遇到的问题是我发送到服务器的文件,即var = body,文件是......不易读取的。我不确定这是否完全正确,所以这可能是一个更好的解释:

这就是我想要的:

{
"title": "Google Custom Search - lectures",
"totalResults": "970000000",
"searchTerms": "lectures",
"count": 10,
"startIndex": 11,
"inputEncoding": "utf8",
"outputEncoding": "utf8",
"safe": "off",
"cx": "[REDACTED]"
}

所有空格都完整无缺。这就是get的URL给出的内容。然而,在收到它并将其与我的算法连接/解析后,我得到:

{"title":"Google Custom Search - lectures","totalResults":"970`0000","searchTerms":"lectures","count":10,"startIndex":11,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"[REDACTED]"}]}

没有任何白色空格或任何东西。它只是作为文本块而出现的。我(希望)我做错了什么,当我使用html.get调用时,有一种方法可以保留原始格式。

我最初的计划是使用一些正则表达式魔法'将其格式化为更易读,但应该有另一种方式,我希望考虑到原始URL已正确格式化它。我正在处理一个大的JSON文件,因此更易读的格式会很好。我不确定我是否完美地解释了我的情景,这是我的第一个Stack问题,但如果不是,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

您可以编写一个简单的函数来按照您希望的方式格式化JSON。您可能会发现需要一种不同的日志格式与网页等格式。这包含了JSON.stringify方法(这里有详细记录:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify并且在这里:
https://www.w3schools.com/js/js_json_stringify.asp

word @! word

输出看起来像这样:

var data = {"title":"Google Custom Search - lectures","totalResults":"970`0000","searchTerms":"lectures","count":10,"startIndex":11,"inputEncoding":"utf8","outputEncoding":"utf8","safe":"off","cx":"[REDACTED]"};

function prettyPrintJSON(data, space = 2) {
    return JSON.stringify(data, null, space);
}
console.log(prettyPrintJSON(data));

这是一个JSFiddle示例:

https://jsfiddle.net/uovtaxq3/3/