繁体   English   中英

如何在 javascript/typescript 中将此字符串转换为 JSON object?

[英]How to convert this string to JSON object in javascript/typescript?

我一直在尝试将这段字符串转换为正确的 JSON obj,经过多次字符串操作和试验,甚至在使用 JSON.parse 和 stringify 函数之后也无法帮助我。 有人可以帮我把这个字符串转换为 Proper JSON Obj 吗?

"{\n  status: 'success',\n  message: 'The user is able to enter data in search bar.'\n}\n{ status: 'success', message: 'Number of cities with letter p are 4.' }\n{\n  status: 'success',\n  message: 'Success messagecity addedappears in green'\n}\n{\n  status: 'success',\n  message: 'The city added is visible under Cities header.'\n}\n"

我尝试使用 JSON.parse 和 stringify 函数,也尝试使用 replaceAll、split(),但没有帮助。

const messageArray = str.replaceAll("\n","").replaceAll("}{","},{").replaceAll('status:', '"status":').replaceAll('message:', '"message":').replaceAll("'", '"').match(/{(.)*?}/g).map(i => JSON.parse(i))

但这是一种可怕的方式。 最好让这种耻辱的发件人保持正常的看法。

  1. 该字符串在每个 object 中都缺少一些逗号,因此首先要添加这些逗号。
  2. 该字符串是一堆分离的对象,因此在将其转换为 json 之前,让我们将它们混合在一起形成一个数组。

 const jsObjecStringWithoutN = document.querySelector('#jsObjecStringWithoutN'); const jsObjecStringAddingCommas = document.querySelector('#jsObjecStringAddingCommas'); const JSONObject = document.querySelector('#JSONObject'); const javascriptObject = "{\n status: 'success',\n message: 'The user is able to enter data in search bar.'\n}\n{ status: 'success', message: 'Number of cities with letter p are 4.' }\n{\n status: 'success',\n message: 'Success messagecity addedappears in green'\n}\n{\n status: 'success',\n message: 'The city added is visible under Cities header.'\n}\n"; // replace the \\n character const replaceEnter = javascriptObject.replaceAll('\n', ''); jsObjecStringWithoutN.innerText = replaceEnter; // add commas at the end of each separated object const addingCommas = replaceEnter.replaceAll('}{', '},{'); jsObjecStringAddingCommas.innerText = addingCommas; //replace single quotes to double quotes const replacingQuotes = addingCommas.replaceAll("\'",'"'); let jsonString = "["+replacingQuotes+"]"; // put double quotes in keys const jsonObjectText = jsonString.replaceAll(/[a-zA-Z0-9]+:/ig, (key)=>{ const formattedKey = key.replace(':',''); return '"'+formattedKey+'":'; }); const jsonObject = JSON.parse(jsonObjectText); JSONObject.innerText = JSON.stringify(jsonObject);
 code{ background: #ececec; }
 <h2>Javascript Object</h1> <code id="jsObjectString">{\n status: 'success',\n message: 'The user is able to enter data in search bar.'\n}\n{ status: 'success', message: 'Number of cities with letter p are 4.' }\n{\n status: 'success',\n message: 'Success messagecity addedappears in green'\n}\n{\n status: 'success',\n message: 'The city added is visible under Cities header.'\n}\n"</code> <h3>First step, delete "/n"</h3> <code id="jsObjecStringWithoutN"></code> <h3>Second step, adding commas</h3> <code id="jsObjecStringAddingCommas"></code> <h3>Third step, wrap it all up in one array of objects and convert it to JSON</h3> <code id="JSONObject"></code>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM