首页 > 解决方案 > JSON 是否接受多行数组?

问题描述

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

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

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

`
Multi
Line 
Data
`

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

`` "" '' 

例如:

var spa = {
..."spa_html_id_body_tag":"< h2 > body content < h2/ > < br > Bal bla bla .............."
}

标签: javascriptjsonsingle-page-application

解决方案


JSON 是一个非常严格的模式。这很棒,但它有几个缺点,其中最大的缺点是无法存储多行字符串。这对于在 JSON 中存储结构化文本和公钥等内容以供以后在浏览器中或在 Node.js 中的服务器上与 JavaScript 代码交互时尤其烦人。

幸运的是,有一个快速而简单的解决方案!

示例 假设我们有一个服务器列表及其关联的公钥。要将这些数据存储为 JSON,我们可以将其存储为逗号分隔的字符串对象数组,它可能看起来像这样:

{
    "servers": {
        "servername.com": {
            "publicKey": [
                "-----BEGIN PUBLIC KEY-----",
                "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0VmDBbzXdgubV/X8JP9B",
                "rM/CqvXBey49BoYjk0ar4OA4LZnmD0A/pn6voPPe+DQC3ZpSFfkdZc5s/ij7edve",
                "ob+reWdGOQAQnDxaGQoFyru/2tz1lNfaVOBU71QcpG4kda4XDjbS62hOqebgkQ0X",
                "71ireglZeaJABvu6EFPFBwyr2ROmM1dq4rKtinpgUf9CTMPL/8yyitka+HsVZTuI",
                "HDpFFxv6xPntfjMrIIRUPieIjRSJcF9yrTVqDIIOO9J3KplphXLXhAHRAnX3ducD",
                "sZYe5yZZEdkS9Kx4P0INkyiqs9DFGwVnIMU07IuM1E+LqLVTqm46MVxzrjaAcyVC",
                "WDTtzkERgvvaG8elbjb6iiA9aijNHM/EK0f68mjme7s0CHn9GJg4TwwvSLb8LqCs",
                "cCKT11WAanE+SuAi0WinuaeFORwAFFXh7O5sS8At4woCNVsIZpFSWWiRBoZf5UBC",
                "SfK8v9AL58foDDiCGlWKcpoQN5KBDBCTBD+RiXgoCKS9daHGpmXfAFsWmcjpVzvs",
                "l24ei4Ue1jd7kj7Dlc8qtXQGZS1BhwDaIV4SQBGYKEBgTMExcsAtI9Sd1rtMFybO",
                "wdfGmZkQ7pcLqOgEzyUOma+vwhWlvtfQXavH5NEdAS+ahsf8SDAI0TQtihLxTvO5",
                "LLrORy0wclzv7V0s+6qoRuMCAwEAAQ==",
                "-----END PUBLIC KEY-----"
            ]
        }
    }
}

您可以使用JSONLint验证此有效 JSON 。

然后,要检索我们的文本块,我们只需在换行符处将它们重新连接在一起,我们可以这样做:

var publicKey = our_data.servers['servername.com'].publicKey.join('\n');

就是这样!现在您可以在 JSON 中存储多行字符串。这不是最漂亮的东西,但考虑到 JSON 的约束,它是最简单的。


推荐阅读