1. 程式人生 > >json中有格式的儲存檔案

json中有格式的儲存檔案

平時,在我們進行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說明