JSON.stringify自定义格式

我正在寻找一种方法来将JSON对象写入文件,但保持与orignal相同的格式。 我已经设法使用writeFileSync(path,data)和JSON.stringify()编写内容,但努力弄清楚如何自定义格式。 JSON.stringify接受的选项似乎只格式化空格的数量。

有什么办法使用JSON.stringify来生成以下格式

{
  "key1"           :{"key": "value1","key": "value2"},
  "key2"           :{"key": "value1","key": "value2"}
}

而不是默认生成的

{
  "key1": 
   {
     "key": "value1",
     "key": "value2"
   },
  "key2": 
   {
     "key": "value1",
     "key": "value2"
   },
}

不幸的是,您可以使用空格参数来定义对象落在树上时的间距。 你提出的要求使用类似正则表达式的自定义格式来对字符串化后的字符串进行格式化。

下面你会发现一些示例代码来做你想要做的事情。 您可以将所有这些附加到单个命令中,如JSON.stringify(myJSON, null, ' ').replace(/: {ns+/g, ': {').replace(/",ns+/g, ', ').replace(/"ns+}/g, '}'); 不过,所以你可以看到我做了什么,我一步一步分解了它。

const myJSON = {
  "key1":{"key": "value1","key2": "value2"},
  "key2":{"key": "value1","key2": "value2"}
}

let myString = JSON.stringify(myJSON, null, ' ').replace(/: {/g, `${' '.repeat(5)}: {`); //Set the key spacing
myString = myString.replace(/: {ns+/g, ': {'); //Bring the child bracket on the same line
myString = myString.replace(/",ns+/g, ', '); //Bring all the other objects for that array up
myString = myString.replace(/"ns+}/g, '}'); //Pull the closing bracket on the same line

const myCompactString = JSON.stringify(myJSON, null, ' ').replace(/: {/g, `${' '.repeat(5)}: {`).replace(/: {ns+/g, ': {').replace(/",ns+/g, ', ').replace(/"ns+}/g, '}'); //Done all at once

console.log(`myString: ${myString}`);
console.log(`myCompactString: ${myCompactString}`);
链接地址: http://www.djcxy.com/p/48213.html

上一篇: JSON.stringify custom formatting

下一篇: How to have each record of JSON on a separate line?