@dflbrhekbn

Как в Zabbix в предобработке с помощью JavaScript «обрезать» строку в JSON?

Добрый день. В заббиксе с помощью низкоуровневого обнаружение получаю JSON
[
   {
      "AllocatedSpace":"4500504576",
      "DiffVolume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7070e300-8301-11e9-80b5-8010667d187a}\\\\\\\\\\\"",
      "MaxSpace":"11810111488",
      "UsedSpace":"3965501440",
      "Volume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7070e300-8301-11e9-80b5-8010667d187a}\\\\\\\\\\\""
   
},
   {
      "AllocatedSpace":"3411214336",
      "DiffVolume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7060e484-82e1-11e9-80b3-806e6f6e6963}\\\\\\\\\\\"",
      "MaxSpace":"5330960384",
      "UsedSpace":"3098034176",
      "Volume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7060e484-82e1-11e9-80b3-806e6f6e6963}\\\\\\\\\\\""
   
}
]


В дальше с помощью LLD делаю макрос {#VOLUME} = $.Volume , который затем пойдет в прототипы элементов данных.
Но проблема в том что в макросе присутствует много лишнего. В интернете нашел решения , что можно с помощью js в предобработке обрезать ненужную часть в "Volume" и оставить к примеру - {7060e484-82e1-11e9-80b3-806e6f6e6963}.
Но к сожалению своими силами мне это сделать не удается.
  • Вопрос задан
  • 42 просмотра
Решения вопроса 1
@dflbrhekbn Автор вопроса
return value.replace(/Win.*{([\w-]+)}\\+"/g,'$1')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yarkov
@yarkov Куратор тега JavaScript
https://github.com/yarkovaleksei/toster-extension
Ничего не понял, но может так?
const data = [
  {
    "AllocatedSpace":"4500504576",
    "DiffVolume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7070e300-8301-11e9-80b5-8010667d187a}\\\\\\\\\\\"",
    "MaxSpace":"11810111488",
    "UsedSpace":"3965501440",
    "Volume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7070e300-8301-11e9-80b5-8010667d187a}\\\\\\\\\\\""

  },
  {
    "AllocatedSpace":"3411214336",
    "DiffVolume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7060e484-82e1-11e9-80b3-806e6f6e6963}\\\\\\\\\\\"",
    "MaxSpace":"5330960384",
    "UsedSpace":"3098034176",
    "Volume":"Win32_Volume.DeviceID=\\\"\\\\\\\\\\\\\\\\?\\\\\\\\Volume{7060e484-82e1-11e9-80b3-806e6f6e6963}\\\\\\\\\\\""

  }
];

const newData = data.map(item => ({
	...item,
  DiffVolume: item.DiffVolume.match(/\{([^\}]+)\}/g)[0],
  Volume: item.Volume.match(/\{([^\}]+)\}/g)[0],
}));

console.log(newData);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы