您的位置:首页 > Web前端 > JavaScript

json中有格式的保存文件

2017-07-25 23:17 429 查看
平时,在我们进行json格式文件的保存的时候,我们会要求有格式的保存,而不是保存为一整行的内容,今天我们就进行说明一下:

如以下代码,我们需要对对象myData进行保存,但是现实结果确实不尽人意

const fs = require('fs');
const myData = {
name:'test',
version:'1.0',
description: 'this is a test project'
};
const outputFilename = './my.json';
fs.writeFile(outputFilename, myData, function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});


如下面显示结果:

[object Object]


那这是什么原因呢,是我们没有将json对象使用 JSON.stringify() 做对象序列化进行保存,只需要在保存之前进行转化即可:
JSON.stringify(myData)


在如下面代码:

const fs = require('fs');
const myData = {
name:'test',
version:'1.0',
description: 'this is a test project'
};
const outputFilename = './my.json';
fs.writeFile(outputFilename, JSON.stringify(myData), function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});


我们就能够得到以下的结果:

{"name":"test","version":"1.0","description":"this is a test project"}


可见是我们基本得到了想要的结果,但是总觉得和别人的不一样,那么,我们应该进行控制输入的格式,那就是当我们在解析的时候,我们进行用空格进行代替,如下面代码:

const fs = require('fs');
const myData = {
name:'test',
version:'1.0',
description: 'this is a test project'
};
const outputFilename = './my.json';
fs.writeFile(outputFilename, JSON.stringify(myData, null, 2), function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});


就可以获得我们想要的有格式的json文件数据了,存储结果如下面所示:

{
"name": "test",
"version": "1.0",
"description": "this is a test project"
}


但是,这
JSON.stringify(myData, null, 2)
其中的2又是什么意思呢??是从开头开始用两个空格进行占位,如下面代码:

const fs = require('fs');
const myData = {
name:'test',
version:'1.0',
description: 'this is a test project'
};
const outputFilename = './my.json';
fs.writeFile(outputFilename, JSON.stringify(myData, null, 'yyyyyyyyy'), function(err) {
if(err) {
console.log(err);
} else {
console.log("JSON saved to " + outputFilename);
}
});


当我们把其中的2换做字符串’yyyyyyyy’的时候,输出的结果又是下面结果:

{
yyyyyyyyy"name": "test",
yyyyyyyyy"version": "1.0",
yyyyyyyyy"description": "this is a test project"
}


这样,我们就能够明白这其中的原理了吧

注意:当我们从文本中获取json时也是需要通过
JSON.parse()
去解析的

JSON.stringify说明
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: