json中有格式的儲存檔案
阿新 • • 發佈:2019-01-27
平時,在我們進行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說明