JavaScript中如何将含等号的Kafka返回字符串转换为合法JSON
JavaScript转换实现方案
核心实现代码
function kafkaStr2Json(inputStr) { // 清理首尾多余符号(单引号、大括号) const rawContent = inputStr.replace(/^['{]+|['}]+$/g, '').trim(); // 拆分所有键值对 const pairs = rawContent.split(',').map(item => item.trim()); const res = {}; pairs.forEach(pair => { const [key, val] = pair.split('=').map(i => i.trim()); // 自动识别数值类型,否则保留字符串 res[key] = !isNaN(Number(val)) ? Number(val) : val; }); return res; }
测试验证
// 传入示例输入 const input = '{device_id=D_2021_A07, key=tele_metrics, sensor_1=62, sensor_2=23}'; const result = kafkaStr2Json(input); // 打印格式化后的JSON console.log(JSON.stringify(result, null, 4));
运行后输出符合要求的标准JSON:
{ "device_id": "D_2021_A07", "key": "tele_metrics", "sensor_1": 62, "sensor_2": 23 }
逻辑说明
- 首先对输入字符串做预处理,移除首尾的单引号、大括号等冗余符号
- 按逗号拆分出所有独立的键值对,同时清理每一项前后的空格
- 对每一个键值对按等号拆分出键和值,对值做类型判断:可转为合法数字则存储为数值类型,否则存储为字符串类型
- 最终输出的JS对象可直接通过
JSON.stringify()方法转为标准JSON字符串使用
注:如果业务场景中存在值包含逗号、等号的情况,可调整拆分逻辑适配更复杂的输入格式,当前实现完美适配给出的示例输入场景。
内容的提问来源于stack exchange,提问作者Abiram
相关产品推荐
相关产品推荐

