【问题标题】:How to convert a string with equal "=" sign to json in JavaScript如何在 JavaScript 中将带有等号“=”符号的字符串转换为 json
【发布时间】:2021-09-16 07:30:01
【问题描述】:

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

'{device_id=D_2021_A07, key=tele_metrics, sensor_1=62, sensor_2=23}'

我想把它转换成这样的有效 JSON

{
    "device_id": "D_2021_A07",   //String
    "key": "tele_metrics",       //String
    "sensor_1": 62,              //Integer
    "sensor_2": 23               //Integer
}

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

【问题讨论】:

  • 我将研究如何更改 Kafka 提供的数据格式。因为你得到的字符串是垃圾。无法解析。
  • @gasher729 只要格式被记录,它是可解析的。它只是不是 JSON。它可能是一种专有格式,但这并不妨碍它被解析,即使它必须手动完成。

标签: lambda apache-kafka jsonparser


【解决方案1】:

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

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));

【讨论】:

  • 效果很好,正如预期的那样。
  • 这个解决方案不会解决数组
  • @Charlie-Greenman 数组未在问题中提及。如果您有不同的要求,请搜索或提出新问题。
猜你喜欢
  • 1970-01-01
  • 2016-09-27
  • 2020-02-18
  • 2015-10-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多