JavaScript如何将API返回的特殊格式键值对字符串转换为对象数组
JavaScript实现非标准格式字符串转标准对象数组
推荐实现方案
核心思路是通过两次正则替换,把非标准的键值对格式转换为合法JSON格式,再用JSON.parse解析为JS对象,安全且兼容性高。
完整可运行代码
// 模拟你拿到的API响应对象 const apiResponse = { "1012": "[{oId=151, oName=store city}, {oId=247, oName=customer city}]" }; // 1. 取出1012对应的原始格式字符串 const rawStr = apiResponse['1012']; // 2. 两步正则转换为合法JSON字符串 const validJsonStr = rawStr // 第一步:匹配键名,把等号替换为冒号,同时给键名加双引号 .replace(/(\w+)=/g, '"$1":') // 第二步:匹配值,数字类型保留原始格式,字符串类型加双引号 .replace(/:([^,}]+)/g, (match, value) => { const trimVal = value.trim(); return !isNaN(Number(trimVal)) ? `:${trimVal}` : `:"${trimVal}"`; }); // 3. 解析为标准对象数组 const targetArray = JSON.parse(validJsonStr); console.log(targetArray); /* 输出结果和你要求的格式完全一致: [ { oId: 151, oName: 'store city' }, { oId: 247, oName: 'customer city' } ] */
注意事项
- 如果API返回的属性值可能包含等号,可把第一步的正则替换为
/(?<=[{,]\s*)(\w+)=/g,只会匹配大括号、逗号后面紧跟的键名,不会误改属性值内部的等号。 - 不推荐使用
eval直接执行原始字符串,存在XSS安全风险,仅在100%确定API返回内容完全可信的场景下可临时使用。
内容的提问来源于stack exchange,提问作者sb29595
相关产品推荐
相关产品推荐

