我试图从本地存储的JSON文件中读取一些数据,将其处理成单独的JS对象,并将其追加到一个队列中。我找不到一种方法来测试我的解析功能是否有效。为了测试它是否工作,我试图从本地JSON文件中提取数据,并将其打印到控制台。我认为在概念上有一些我不理解的地方,或者有一个我不知道的测试方法。
我无法运行 fs
模块,即使使用Browserify。Firefox告诉我 createReadStream
不是一个函数。
索引.html
<!DOCTYPE html>
<div id="container" style="position: relative; width: 100%; height: 700px;"></div>
<!-- <link rel="stylesheet" type="text/css" href="index.css" /> -->
<body>
<script type="text/javascript" src="parse.js"></script>
</body>
</html>
parse.js
//Assume JSON output = {attack source, attack destination, attack type}
//Required modules
//@ts-ignore: undeclared module
const watchStream = require('fs-watch-stream')
const es = require('event-stream')
const stream = require('JSONStream')
const fs = require('fs');
//Create websocket to receive json data instead?
//Save for later
//https.createServer(attacks).listen(9090)
function initial (){
var filepath = 'sample.json';
//Creates readable stream for JSON file parsing
var stream = fs.createReadStream(filepath, { encoding: 'utf8' }),
parser = stream.parse('*.');
//Send read data to parser function
return stream.pipe(parser);
}
initial()
.pipe(es.mapSync(function (data) {
console.log(data);
}));
示例.json
{
"employees": {
"employee": [
{
"id": "1",
"firstName": "Tom",
"lastName": "Cruise",
"photo": "https://jsonformatter.org/img/tom-cruise.jpg"
},
{
"id": "2",
"firstName": "Maria",
"lastName": "Sharapova",
"photo": "https://jsonformatter.org/img/Maria-Sharapova.jpg"
},
{
"id": "3",
"firstName": "Robert",
"lastName": "Downey Jr.",
"photo": "https://jsonformatter.org/img/Robert-Downey-Jr.jpg"
}
]
}
}
没有必要让浏览器参与进来,只要运行 node parse.js
. Node.js有 console.log
你会在控制台中看到输出。
如果您安装了 fs-extra
,您可以使用 fs.readJson()
直接以对象形式获取JSON。