Отфильтруйте текстовое содержимое и попробуйте преобразовать отфильтрованное содержимое в JSON - PullRequest
0 голосов
/ 06 мая 2020

У меня есть ввод в виде строковой переменной msg.payload, как указано ниже.

Hi Team,
Below are the details of for the given source platform.
name=abc
status=Active
company=Discovery
FromDate=6/05/2020
ToDate=20/05/2020
Please do the needful ASAP
Thanks & Regards,
xyz

Я хочу использовать только

name=abc
status=Active
company=Discovery
FromDate=6/05/2020
ToDate=20/05/2020

игнорировать остальные а затем преобразовать его в JSON, используя JavaScript, например

{"name":"abc", "status":"Active","company":"ABCD" ,"FromDate":"6/05/2020","ToDate":"20/05/2020"}

Как я могу выполнить sh это? Все данные на входе будут иметь форму ключ = значение.

1 Ответ

1 голос
/ 06 мая 2020

Вы можете воспользоваться преимуществами нескольких встроенных функций JavaScript строк и массивов.

Преобразование ввода в массив строк с помощью String.prototype.split () :

const lines = input.split('\n');

Отфильтруйте строки, не содержащие знака равенства, с помощью Array.prototype.filter () :

const kvPairs = lines.filter(line => line.includes('='));

Используйте Array.prototype. forEach () и String.prototype.split () для загрузки объекта со свойствами «ключ-значение»:

let object = {};
kvPairs.forEach(line => {
  [key, val] = line.split('=');
  object[key] = val;
});

Собираем все вместе:

const input = 'Hi Team,\nBelow are the details of for the given source platform.\nname=abc\nstatus=Active\ncompany=Discovery\nFromDate=6/05/2020\nToDate=20/05/2020\nPlease do the needful ASAP\nThanks & Regards,\nxyz';

const lines = input.split('\n');

const kvPairs = lines.filter(line => line.includes('='));

let object = {};
kvPairs.forEach(line => {
  [key, val] = line.split('=');
  object[key] = val;
});

console.log('object:', object);
...