Преобразование Джолта из json в json для двух операций Сифта - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь сопоставить одно значение входного json с хэш-картой выходного json, а также хочу сохранить значение в каком-то другом ключе, используя преобразование json jolt

input json:

{
  "metadata": "/a=value1/b=value2/c=value3"
}

spec:

 [{
            "operation": "shift",
            "spec": {
              "metadata": {
                // match exactly sets of key value pairs
                "/*/*/*": {
                  // pull each one off and accumulate them into a temp array
                  "$(0,1)": "temp[]",
                  "$(0,2)": "temp[]",
                  "$(0,3)": "temp[]"
                }
              }
            }
          },
          {
            "operation": "shift",
            "spec": {
              "temp": {
                "*": {
                  // match each item by ":" into two captures
                  "*=*": {
                    "$(0,2)": "data.&(1,1)"
                  }
                }
              }
            }
            }

        ]

output

 {
          "data" : {
            "a" : "value1",
            "b" : "value2",
            "c" : "value3"
          }
        }    

, в то время как я также хочу сопоставить метаданные строки с ожидаемыми выходными данными OriginalData:

{
  "data" : {
    "a" : "value1",
    "b" : "value2",
    "c" : "value3"
  },
  "originalData":"/a=value1/b=value2/c=value3"
}

1 Ответ

0 голосов
/ 03 января 2019

Спец

    [
      {
        "operation": "shift",
        "spec": {
          "metadata": {
            "@": "originalData",
            // match exactly sets of key value pairs
            "/*/*/*": {
              // pull each one off and accumulate them into a temp array
              "$(0,1)": "temp[]",
              "$(0,2)": "temp[]",
              "$(0,3)": "temp[]"
            }
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "originalData": "originalData", // passthru
          "temp": {
            "*": {
              // match each item by ":" into two captures
              "*=*": {
                "$(0,2)": "data.&(1,1)"
              }
            }
          }
        }
      }
    ]
...