猿问

JSON 是否接受多行数组?

我正在尝试将 SPA(单页应用程序)构建为仅使用 JSON 的简单网站,同时我正在学习 JavaScript。


在我使用的技术中,带有 HTML 标签的页面内容由 JavaScript 注入。


由于上一个 JavaScript 版本可以在反引号之间存储数据


`

Multi

Line 

Data

`

我在问多行 JSON 对象是否可以通过相同的技术或类似的技术存储数据,因此我可以实现一种编辑数据的方法,而无需像新的 JavaScript 框架那样从 HTML 文件中导入每个标签。


`` "" '' 

例如:


var spa = {

..."spa_html_id_body_tag":"< h2 > body content < h2/ > < br > Bal bla bla .............."

}


墨色风雨
浏览 224回答 3
3回答

幕布斯7119047

JSON 是一种非常严格的模式。它很棒,但它有几个缺点,其中最大的缺点是无法存储多行字符串。这对于在 JSON 中存储诸如结构化文本和公钥之类的内容特别烦人,以便以后在浏览器中或在 Node.js 中的服务器上与 JavaScript 代码交互。幸运的是,有一个快速而笨拙的解决方案!示例 假设我们有一个服务器列表及其关联的公钥。要将数据存储为 JSON,我们可以将其存储为逗号分隔的字符串对象数组,它可能如下所示:{&nbsp; &nbsp; "servers": {&nbsp; &nbsp; &nbsp; &nbsp; "servername.com": {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "publicKey": [&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "-----BEGIN PUBLIC KEY-----",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0VmDBbzXdgubV/X8JP9B",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "rM/CqvXBey49BoYjk0ar4OA4LZnmD0A/pn6voPPe+DQC3ZpSFfkdZc5s/ij7edve",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ob+reWdGOQAQnDxaGQoFyru/2tz1lNfaVOBU71QcpG4kda4XDjbS62hOqebgkQ0X",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "71ireglZeaJABvu6EFPFBwyr2ROmM1dq4rKtinpgUf9CTMPL/8yyitka+HsVZTuI",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "HDpFFxv6xPntfjMrIIRUPieIjRSJcF9yrTVqDIIOO9J3KplphXLXhAHRAnX3ducD",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "sZYe5yZZEdkS9Kx4P0INkyiqs9DFGwVnIMU07IuM1E+LqLVTqm46MVxzrjaAcyVC",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "WDTtzkERgvvaG8elbjb6iiA9aijNHM/EK0f68mjme7s0CHn9GJg4TwwvSLb8LqCs",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "cCKT11WAanE+SuAi0WinuaeFORwAFFXh7O5sS8At4woCNVsIZpFSWWiRBoZf5UBC",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "SfK8v9AL58foDDiCGlWKcpoQN5KBDBCTBD+RiXgoCKS9daHGpmXfAFsWmcjpVzvs",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "l24ei4Ue1jd7kj7Dlc8qtXQGZS1BhwDaIV4SQBGYKEBgTMExcsAtI9Sd1rtMFybO",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "wdfGmZkQ7pcLqOgEzyUOma+vwhWlvtfQXavH5NEdAS+ahsf8SDAI0TQtihLxTvO5",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "LLrORy0wclzv7V0s+6qoRuMCAwEAAQ==",&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "-----END PUBLIC KEY-----"&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ]&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}您可以使用JSONLint验证此有效 JSON 。然后,要检索我们的文本块,我们只需要在换行符上将它们重新连接在一起,我们可以这样做:var publicKey = our_data.servers['servername.com'].publicKey.join('\n');就是这样!现在您可以在 JSON 中存储多行字符串。这不是最漂亮的东西,但鉴于 JSON 的约束,它是最简单的。

梵蒂冈之花

根据定义,JSON 数据使用双引号括起来的字符串。根据您的用例,使用 HTML 标签可能仍然是最简单的解决方案:{&nbsp; &nbsp; "text": "Multi<br />Line<br />Data"}如果您更喜欢使用\n表示法来表示新行,那么您可以将文本编写为"Multi\nLine\nData"- 如有必要 -replace在将其导入 JavaScript 时使用该方法:JSON.parse(json).text.replace(/\n/g, '<br />');但是,如果您想要更大的灵活性,那么您可能需要进入 HTML 模板的世界。对于比 HTML 更简单的选项,我建议您查看Markdown。在 Markdown 中,你的例子可以简单地写成:MultiLineData您可以在 JSON 中引用 Markdown 文件,并使用该引用将其导入 JavaScript。

POPMUISE

JSON 不像 JavaScript 模板文字那样支持反引号。但这应该不是问题。您仍然可以使用模板文字创建多行字符串,并且在您调用JSON.stringify()它时将\n在 JSON 中使用换行符。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答