[英]Does JSON accept multi-line arrays?
我在學習JavaScript的同時,嘗試僅使用JSON將SPA(單頁應用程序)構建為一個簡單的網站。
在我使用的技術中,帶有HTML標簽的頁面內容是由JavaScript注入的。
由於最新的JavaScript版本可以在反引號之間存儲數據
`
Multi
Line
Data
`
我問多行JSON對象是否可以通過相同的技術或類似方法存儲數據,因此我可以實現一種編輯數據的方法,而不必像新的JavaScript框架那樣從HTML文件導入每個標簽。
`` "" ''
例如:
var spa = {
..."spa_html_id_body_tag":"< h2 > body content < h2/ > < br > Bal bla bla .............."
}
JSON不像JavaScript模板文字那樣支持反引號。 但這不應該是一個問題。 您仍然可以使用模板文字來創建多行字符串,並且當您調用JSON.stringify()
,它將在JSON中使用\\n
作為換行符。
JSON是一個非常嚴格的模式。 很好,但是它有一些缺點,其中最大的缺點是無法存儲多行字符串。 對於將諸如結構化文本和公共密鑰之類的內容存儲在JSON中,以便以后在瀏覽器中或在Node中的服務器上與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-----"
]
}
}
}
然后,要檢索我們的文本塊,我們只需要將它們重新連接到換行符上即可,我們可以這樣做:
var publicKey = our_data.servers['servername.com'].publicKey.join('\n');
就是這樣! 現在,您可以在JSON中存儲多行字符串。 這不是最漂亮的東西,但是鑒於JSON的限制,這是最簡單的事情。
根據定義,JSON數據使用雙引號引起來的字符串。 根據您的用例,使用HTML標記仍可能是最簡單的解決方案:
{
"text": "Multi<br />Line<br />Data"
}
如果您希望使用\\n
表示法來表示新行,則可以將文本編寫為"Multi\\nLine\\nData"
並且在必要時在將其導入JavaScript時使用replace
方法:
JSON.parse(json).text.replace(/\n/g, '<br />');
但是,如果您想要更大的靈活性,那么您可能需要進入HTML模板世界。 對於比HTML更簡單的選項,我建議您看一下Markdown 。 在Markdown中,您的示例可以簡單地編寫為:
Multi
Line
Data
您可以在JSON中引用Markdown文件,並使用該引用將其導入JavaScript。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.