簡體   English   中英

將多行鍵值字符串轉換為 JSON

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM