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

如何在JavaScript中解析格式为'{name: "amit", age: 40}'的对象?

解析非标准JSON格式字符串的方法

你拿到的字符串并非标准JSON格式(JSON要求对象的键必须用双引号包裹),直接使用JSON.parse()会触发语法错误,以下是几种可行的解析方案:

方案1:使用eval()(不推荐,存在安全风险)

若能确保字符串来源绝对安全、无恶意代码,可以用eval()直接解析:

var str = '{name: "amit", age: 40}';
var obj = eval('(' + str + ')');
console.log(obj.name); // 输出 "amit"

注意:eval()会执行字符串中的任意代码,若字符串不可信,可能导致注入攻击,非必要场景请勿使用。

方案2:转成标准JSON后解析

通过正则表达式给无引号的键添加双引号,转换成合法JSON格式后再用JSON.parse()解析:

var str = '{name: "amit", age: 40}';
// 正则匹配并替换无引号的键
var validJsonStr = str.replace(/([a-zA-Z0-9_]+):/g, '"$1":');
var obj = JSON.parse(validJsonStr);
console.log(obj.age); // 输出 40

该方法安全性更高,正则能处理大多数由字母、数字、下划线组成的常规键名。

方案3:使用第三方宽松JSON解析库(如json5)

如果需要频繁处理这类非标准格式字符串,可以使用专门支持宽松JSON语法的库json5:

// 先安装依赖:npm install json5
const JSON5 = require('json5');
var str = '{name: "amit", age: 40}';
var obj = JSON5.parse(str);
console.log(obj); // 输出 { name: 'amit', age: 40 }

json5支持无引号键、单引号字符串、注释等多种宽松语法,适合复杂场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:31:00