将JSON字符串化输出到多行

24

我正在编写一个简单的JS应用程序,它接收JSON文件,将信息显示给用户并允许他们进行修改,然后允许重新导出JSON。然而,传入的JSON是多行的;每个键/值都在自己的一行上。当我使用 .stringify 输出JSON时,它全部出现在一行上。有没有办法让 stringify 方法分隔行?

JSON 结构:

{"Title":
 {"lvlOne":[
  {"key":"val"},
  {"key":"val"},
  {"key":"val"}
 ],
 "lvl2":[
  {"key":"val"},
  {"key":"val"},
  {"key":"val"}
 ]}
}

但是当我输出时,它全部显示为:

{"Title":{"lvlOne":[{"key":"val"},{"key":"val"},{"key":"val"}],"lvl2":[{"key":"val"{"key":"val"},{"key":"val"}]}}

请研究JSON.stringify:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify - 可以使用第三个参数来指定漂亮打印的间距。 - Ian
你要在哪里打印这个输出? - user2226755
我使用JSON填充<textarea>,以便用户可以复制和部署。 - Joey N
4个回答

44
您可以使用stringify方法space参数。以下是来自官方页面的相关摘录:
JSON.stringify({ a: 2 }, null, " ");   // '{\n "a": 2\n}'

为什么在编程中使用 " " 可以换行而不是只是空格? - aanhlle

10
你也可以使用。
var json = JSON.stringify({ uno: 1, dos : {"s":"dd","t":"tt"} }, null, '\t');
console.log(json);

8

甚至更好的是,缩进中空格的数量:

var json = JSON.stringify({ uno: 1, dos : {"s":"dd","t":"tt"} }, null, 2);

-1

以上的方法都对我没用,唯一有效的方法是

await fs.promises.writeFile('testdataattr.json',JSON.stringify(datatofile, null,'\r\n'),'utf8') ;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接