Ad Widget

Collapse

Конвертация XML в JSON в правиле обнаружения

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • igor-box
    Junior Member
    • Jan 2021
    • 15

    #16
    Еще раз всем спасибо. Попробовал оба предложенных здесь способа - оба рабочие!

    Comment

    • igor-box
      Junior Member
      • Jan 2021
      • 15

      #17
      Подскажите еще: само правило работает нормально. Но висит сообщение с ошибкой: "Cannot create application: non-discovered application with the same name "Camera" already exists."

      Click image for larger version

Name:	3.png
Views:	341
Size:	19.4 KB
ID:	417595

      вот само правило:

      Click image for larger version

Name:	1.png
Views:	336
Size:	14.0 KB
ID:	417596

      Click image for larger version

Name:	2.png
Views:	337
Size:	30.4 KB
ID:	417597

      Comment

      • Hamardaban
        Senior Member
        Zabbix Certified SpecialistZabbix Certified Professional
        • May 2019
        • 2713

        #18
        UP
        в версии 5.4 добавят: «New JavaScript object XML has been added to provide an ability to extract data by XPath and convert XML to JavaScript object (JSON) and vice versa.»

        Comment

        • sadman
          Senior Member
          • Dec 2010
          • 1611

          #19
          Подшаманил вариант Олега:

          Code:
          const re = /<meetingName>(.*)<\/meetingName>[\s\S]*?<meetingID>(\w+)<\/meetingID>[\s\S]*?<isBreakout>(\w+)<\/isBreakout>/g;
          const fmt = '{"{#NAME}": "$1", "{#ID}": "$2", "{#ISBREAKOUT}": $3}';
          var lld = '[';
          var data = value.match(re);
          if (data) { lld += data.toString().replace(re,fmt); }
          lld += ']';
          return lld;
          Первая строка определяет из каких элементов забирать данные, вторая - в какие макросы пихать. XML-элементы перечислены в том порядке, в котором они встречаются в родительском элементе. Иначе работать не будет.

          Так же добавлена защита от вылета правила LLD при отсутствии набора XML-элементов - например, когда контролируемые объекты не всегда присутствуют в общем XML-дереве.

          Пример.

          Исходник:

          Code:
          <response>
             <returncode>SUCCESS</returncode>
             <meetings>
                <meeting>
                   <meetingName>Конференция #1</meetingName>
                   <meetingID>cmw0lhe79xparxkg</meetingID>
                   <maxUsers>0</maxUsers>
                   <moderatorCount>1</moderatorCount>
                   <isBreakout>false</isBreakout>
                </meeting>
                <meeting>
                   <meetingName>Конференция #2</meetingName>
                   <meetingID>nclc8bamjlhscykrhenwkkm4</meetingID>
                   <maxUsers>0</maxUsers>
                   <moderatorCount>1</moderatorCount>
                   <isBreakout>false</isBreakout>
                </meeting>
             </meetings>
          </response>
          Результат:

          Code:
          [
             {
                "{#NAME}": "Конференция #1",
                "{#ID}": "cmw0lhe79xparxkg",
                "{#ISBREAKOUT}": false
             },
             {
                "{#NAME}": "Конференция #2",
                "{#ID}": "nclc8bamjlhscykrhenwkkm4",
                "{#ISBREAKOUT}": false
             }
          ]

          Comment

          Working...