[英]How to convert multiline string value to a legit JSON string variable in JavaScript?
[英]Convert a multiline key:value string to JSON
我正在嘗試將多行鍵值字符串轉換為 JSON。 原因是我需要為 ajax 請求示例數據創建 HTTP 標頭
內容類型:文本主機:myhost.com
我想讓它變成
{"content-type":"text",
"host":"myhost.com" }
我試着四處看看並檢查了一些文件,這是我從 Github 得到的最好的
strToJSON = (str) => {
let commaAdded = str.replace(/(?:\r\n|\r|\n)/g, ',').trim().replace(/,+$/g, '')
let items = commaAdded.split(',')
let jsonString = items.map(item => {
return item.replace(/([^:]+)(:)(.+$)/, (match, p1, p2, p3) => {
return `"${p1.trim()}": "${p3.trim()}"`
})
}).join(', ')
try {
return JSON.parse(`{${jsonString}}`)
} catch (err) {
console.log(err)
}
}
這工作正常,但格式不正確。 我得到了這個:
{content-type:"text",
host:"myhost.com" }
鍵中缺少雙引號。 我嘗試在解析之前記錄 jsonString 並且格式很好。 但是一旦使用 JSON.parse 解析它,雙引號就丟失了
我希望有人能啟發我還有什么我忘了補充。
您的函數strToJSON
輸出一個 javascript 對象。 如果需要 JSON,則需要將其轉換為 JSON 字符串:
JSON.stringify(strToJSON("content-type:text host:myhost.com"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.