如何将含等号的字符串解析为可访问嵌套键的对象
将自定义格式字符串转换为可访问的JavaScript对象
你可以通过字符串替换+JSON解析的方式把这个非标准格式的字符串转成能通过点语法访问的对象,具体实现如下:
实现代码
function parseCustomString(str) { // 把所有 = 替换为 JSON格式的 : let formattedStr = str.replace(/=/g, ':'); // 给所有键名加上双引号(匹配大写字母/下划线组成的键) formattedStr = formattedStr.replace(/([A-Z_]+)(?=:)/g, '"$1"'); // 给值中的字符串(非数字、非布尔值)加上双引号 formattedStr = formattedStr.replace(/:\s*([A-Z_]+)(?=[,}])/g, ': "$1"'); // 解析为JSON对象 return JSON.parse(formattedStr); } // 测试使用 let stringValue = "{DATA={VERSION=1.1, STATE=true, STATUS=ONLINE}}"; let result = parseCustomString(stringValue); console.log(result.DATA.STATUS); // 输出 ONLINE
步骤说明
- 第一步替换所有
=为:,让格式向JSON靠拢 - 第二步给所有作为键的标识符(示例中都是大写字母/下划线)添加双引号,满足JSON对键名的要求
- 第三步给值里的字符串类型(比如
ONLINE,区分于数字1.1和布尔值true)添加双引号 - 最后用
JSON.parse()把处理后的字符串解析为JavaScript对象,就能直接用点语法访问嵌套属性了
如果你的字符串格式有更复杂的情况(比如键名包含小写字母、值里有特殊字符),可以根据实际需求调整正则表达式的匹配规则。
内容的提问来源于stack exchange,提问作者alphanumeric
相关产品推荐
相关产品推荐

