You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将非标准JSON格式字符串转换为JavaScript对象?

问题描述

我有一段非标准JSON格式的字符串:

var string = "{
 name: 'something',
  dependencies: [
    'express',
    'axios'
  ]
}"

我希望将该字符串转换为JavaScript对象/JSON格式,目标格式如下:

{
 name: "something",
 dependencies: [
  "express",
  "axios"
 ]
}

我尝试使用JSON.parse(string)方法进行转换,但抛出了如下语法错误:

undefined:2
    dependencies: [
    ^

SyntaxError: Unexpected token d in JSON at position 6
问题原因

JSON有严格的语法规则:

  • 对象的键必须用双引号包裹
  • 字符串值必须用双引号包裹
    你的字符串用了单引号,且键没有加引号,完全不符合JSON标准,所以JSON.parse直接报错。
解决方法

下面是几种可行的转换方案:

方案1:手动修正字符串后用JSON.parse

先把单引号替换成双引号,再给未加引号的键补上双引号:

var string = "{ name: 'something', dependencies: ['express', 'axios'] }";
// 替换单引号为双引号,同时给键添加双引号
var fixedString = string
  .replace(/'/g, '"')
  .replace(/([a-zA-Z0-9_]+):/g, '"$1":');
var obj = JSON.parse(fixedString);
console.log(obj);

这种方法适合结构简单的场景,如果字符串里有特殊字符(比如键含空格、引号),需要调整正则表达式。

方案2:用eval解析(注意安全风险)

你的字符串本身是合法的JS对象字面量,可以直接用eval解析:

var string = "{ name: 'something', dependencies: ['express', 'axios'] }";
var obj = eval('(' + string + ')');
console.log(obj);

⚠️ 警告:eval会执行任何传入的代码,绝对不能用在处理不可信的外部输入,否则会有严重安全漏洞。

方案3:用第三方库(如json5)

JSON5是JSON的超集,支持未加引号的键、单引号等宽松语法。先安装:

npm install json5

然后在代码中使用:

const JSON5 = require('json5');
var string = "{ name: 'something', dependencies: ['express', 'axios'] }";
var obj = JSON5.parse(string);
console.log(obj);

这种方法最可靠,适合复杂的非标准JSON场景。

最终转换结果

转换后的JavaScript对象如下:

{
 name: "something",
 dependencies: [
  "express",
  "axios"
 ]
}

内容的提问来源于stack exchange,提问作者PewPew

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 19:10:47