如何在 JavaScript 中将带有等号“=”的字符串转换为 json

Abi*_*ram 1 lambda apache-kafka jsonparser

以下字符串从 Kafka 返回到 Lambda 连接器。

'{device_id=D_2021_A07, key=tele_metrics, sensor_1=62, sensor_2=23}'
Run Code Online (Sandbox Code Playgroud)

我想将其转换为有效的 JSON,如下所示

{
    "device_id": "D_2021_A07",   //String
    "key": "tele_metrics",       //String
    "sensor_1": 62,              //Integer
    "sensor_2": 23               //Integer
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 JavaScript 中做到这一点。

Fel*_*ütz 5

您可以剥离第一个和最后一个字符,在逗号处分割,在每个 处分割=,如果可能的话将值转换为数字,然后将这些对组合成一个对象:

const dataA = '{device_id=D_2021_A07, key=tele_metrics, sensor_1=62, sensor_2=23}';
const dataB = Object.fromEntries(
  dataA
    .substring(1, dataA.length - 1)
    .split(', ')
    .map(pair => pair.split('='))
    .map(([key, value]) => [key, isNaN(value) ? value : +value])
);
console.log(dataB);
console.log(JSON.stringify(dataB));
Run Code Online (Sandbox Code Playgroud)