Преобразование JOLT удаляет все поля, кроме одного

Я хочу удалить все поля из JSON, кроме одного с именем foo, Я использовал спецификацию трансформации, как указано ниже:

[
  {
    "operation": "remove",
    "spec": {
      "^(?!foo).*$": ""
    }
  }
]

Я попытался выполнить это на http://jolt-demo.appspot.com/, но это не работает, и он выводит входной JSON, без преобразования. Я делаю что-то неправильно?

1 ответ

Решение

Да, "shift" поддерживает любые соответствия "регулярных выражений", кроме "", поэтому "^ (?! foo).$" Не будет работать.

Я думаю, что вам лучше, используя "shift", чтобы сопоставить "foo" и скопировать его в вывод. Все, что не соответствует спецификации "shift", не копируется в вывод.

спекуляция

[
  {
    "operation": "shift",
    "spec": {
      // matches top level key "foo" in the intput, and copies the 
      //  value at that location to the output map with key "foo".
      "foo" : "foo"
    }
  }
]

Shift копирует данные со входа на новый выход, все остальные операции (по умолчанию, удаление, количество элементов и т. Д.) Изменяют ввод.

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