JOLT spe c массив объектов ключ удаления - PullRequest
0 голосов
/ 09 июля 2020

Я пытаюсь понять, как удалить ключевые и объектные слои для нижеприведенных. Любая помощь будет принята с благодарностью. Попытка использовать процессор JOLT в NIFI для устранения этого изменения данных.

INPUT:

 [ {
  "rbr" : {
    "fetchTime" : "2020-07-06T23:46:23.677Z",
    "customMetadata" : {
      "x" : "1",
      "o2" : {
        "x2" : "y"
      }
    }
  },
  "xyz": {
    "fetchTime" : "2020-07-06T23:46:23.677Z",
    "customMetadata" : {
      "x" : "1",
      "o2" : {
        "x2" : "y"
      }
    }
  }
}
]

желаемый результат:

 [
  {
    "fetchTime" : "2020-07-06T23:46:23.677Z",
    "customMetadata" : {
      "x" : "1",
      "o2" : {
        "x2" : "y"
      }
    },
    "type": "rbr"
  },
  {
    "fetchTime" : "2020-07-06T23:46:23.677Z",
    "customMetadata" : {
      "x" : "1",
      "o2" : {
        "x2" : "y"
      }
    },
    "type": "xyz"

  }
]

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Может быть выполнено с помощью простой операции сдвига

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "fetchTime": "[#2].fetchTime",
          "customMetadata": "[#2].customMetadata",
          "$": "[#2].type"
        }
      }
    }
  }
]

Редактировать 1

Можно сдвинуть все значения с текущего уровня, используя "@": "[#3].&",

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "@": "[#3].&",
            "$1": "[#3].type"
          }
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "type": "=firstElement(@(1,type))"
      }
    }
  }
]
0 голосов
/ 09 июля 2020

Выполните итерацию по массиву и для каждого obj создайте newObj вот так:

objKey=Object.keys(obj)[0];
newObj=obj[objKey];
newObj.type=objKey;

и pu sh в новый массив.

...