Проблема при преобразовании JSON с использованием спецификации JOLT - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь вызвать спецификацию преобразования для приведенного ниже ввода:

{
  "a": {
    "serviceTesta": "Testa1",
    "b": {
      "serviceTestb": "Testb1",
      "c": [
        {
          "name": "x",
          "value": "100",
          "desc": "this is description of X"
        },
        {
          "name": "y",
          "value": "200",
          "desc": "this is description of y"
        }
      ]
    }
  }
}

, и ожидаемый результат выглядит следующим образом:

[
  {
    "Testa1_Testb1_x": "100",
    "Testa1_Testb1_x_desc": "this is description of X"
  },
  {
     "Testa1_Testb1_y": "100",
    "Testa1_Testb1_y_desc": "this is description of y"
  }
]

Моя спецификация:

[
  {
    "operation": "shift",
    "spec": {
      "a": {
        "b": {
          "c": {
            "*": {
              "value": "@(4,serviceTesta).@(3,serviceTestb)@(1,name)"
            }
          }
        }
      }
    }
 }

 ]

Я новичок в толчке, пробовал разные способы, но не смог получить желаемый результат.Любая помощь высоко ценится.

Спасибо

1 Ответ

0 голосов
/ 14 марта 2019

Вы можете достичь желаемого результата, выполнив вторичную смену трансформации:

, которая использует комбинацию * и &n для создания вашего ключа.

[
  {
    "operation": "shift",
    "spec": {
      "a": {
        "b": {
          "c": {
            "*": {
              "value": "@(4,serviceTesta).@(3,serviceTestb).@(1,name)"
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": {
          "*": {
            "@": "&3_&2_&1"
          }
        }
      }
    }
  }
]
...