如何在JavaScript/TypeScript中将非标准字符串转为JSON对象?
解决非标准字符串转合法JSON的方案
你的目标字符串存在三个不符合JSON规范的问题:
- 对象的键没有用双引号包裹
- 字符串使用了单引号而非双引号
- 多个对象直接并列,没有用数组包裹
可以通过以下字符串处理步骤将其转换为合法JSON:
处理代码示例(JavaScript)
// 原始非标准字符串(注意去掉外层多余的双引号) const rawStr = `{ status: 'success', message: 'The user is able to enter data in search bar.' } { status: 'success', message: 'Number of cities with letter p are 4.' } { status: 'success', message: 'Success messagecity addedappears in green' } { status: 'success', message: 'The city added is visible under Cities header.' }`; // 1. 给对象键添加双引号;2. 替换单引号为双引号;3. 处理对象分隔并包裹成数组 const validJsonStr = `[${rawStr .replace(/(\w+):/g, '"$1":') .replaceAll("'", '"') .replace(/}\s*{/g, '}, {')}]`; // 解析为JSON对象 const jsonObj = JSON.parse(validJsonStr); console.log(jsonObj);
步骤说明
- 给键加双引号:用正则
/(\w+):/g匹配所有键名+冒号的格式,替换为带双引号的键名,符合JSON对键的要求。 - 替换单引号:JSON规定字符串必须用双引号,直接替换所有单引号即可。
- 包裹成数组:把多个并列对象之间的空白替换为逗号分隔,再用
[]包裹,形成合法的JSON数组结构。
如果你的原始字符串外层带有额外的双引号(如示例中的
代码所示),需要先通过rawStr.slice(1, -1)去掉首尾的双引号再进行上述处理。内容的提问来源于stack exchange,提问作者Manikanta Rayala
相关产品推荐
相关产品推荐

