Как выполнить операцию Jolt Spec во вложенном Json

Я пытаюсь написать Jolt Spec для вложенного json следующей входной записи. В этом есть проблема... имя объекта не всегда содержит несколько объектов, как показано ниже, в некоторых случаях оно содержит один объект, и мы также должны проанализировать это.

Вход

{
  "Status": "Green",
  "objectname": {
    "LED TV": {
      "values": [
        [
          "one",
          "two",
          "three",
          "four"
        ],
        [
          0,
          0,
          0,
          "one"
        ],
        [
          0,
          "one",
          0,
          "two"
        ]
      ],
      "time": [
        1663331241000,
        1663330155000,
        1663328545000
      ]
    },
    "LED Bulb": {
      "values": [
        [
          "one",
          "two",
          "three",
          "four"
        ],
        [
          0,
          0,
          0,
          "one"
        ],
        [
          0,
          "one",
          0,
          "two"
        ]
      ],
      "time": [
        1663331241000,
        1663330155000,
        1663328545000
      ]
    },
    "LED LAMP": {
      "values": [
        [
          "one",
          "two",
          "three",
          "four"
        ],
        [
          0,
          0,
          0,
          "one"
        ],
        [
          0,
          "one",
          0,
          "two"
        ]
      ],
      "time": [
        1663331541000,
        1663330555000,
        1663328545000
      ]
    }
  },
  "Source": "LED EQUIPS"
}

Ожидаемый результат

[
  [
    "Status",
    "Green",
    "objectname",
    "LED TV",
    "values",
    [
      "one",
      "two",
      "three",
      "four"
    ],
    [
      0,
      0,
      0,
      "one"
    ],
    [
      0,
      "one",
      0,
      "two"
    ]
  ],
  [
    "Status",
    "Green",
    "objectname",
    "LED Bulb",
    "values",
    [
      "one",
      "two",
      "three",
      "four"
    ],
    [
      0,
      0,
      0,
      "one"
    ],
    [
      0,
      "one",
      0,
      "two"
    ]
  ],
  [
    "Status",
    "Green",
    "objectname",
    "LED LAMP",
    "values",
    [
      "one",
      "two",
      "three",
      "four"
    ],
    [
      0,
      0,
      0,
      "one"
    ],
    [
      0,
      "one",
      0,
      "two"
    ]
  ],
  "Source",
  "LED EQUIPS"
]

PS: мы должны проанализировать «имя объекта», если в нем есть одна или несколько записей.

Привет @BarbarosÖzhan, я отредактировал изменения в вышеуказанном запросе.

self lab 16.09.2022 08:50
Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
1
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать подстановочные знаки $ для получения ключей атрибутов или объектов для нескольких слоев и использовать подстановочные знаки [# ] для создания соответствующих массивов из производных значений из узлов, таких как

[
  {
    "operation": "shift",
    "spec": {
      "o*": { // filter for "objectname"
        "*": {
          "v*": { // filter for "values"
            "#Status": "[#3]", // fixed value "Status" in order to repeat within the objects 
            "@(3,Status)": "[#3]", // pick the value of the Status attribute after going three levels up the tree
            "$2": "[#3]", // collect the key names for each object under related "objectname"
            "$1": "[#3]",
            "$": "[#3]",
            "*": {
              "@": "[#4]"
            }
          }
        }
      }
    }
  }
]

Другие вопросы по теме