формат jolt с массивом строк - PullRequest
0 голосов
/ 19 июня 2020

Попытка создать сценарий Jolt, который поместит одну числовую строку, затем массив строк в один единственный массив и тег в конце этого массива. Это значения, с которыми я работал.

JSON INPUT

[
{
"foo": "111",
"bar": "222",
"sun": "333",
"ListofStrings": [
  "Dog",
  "Train"
],
"ID": "BLAH"
},
{
"foo": "999",
"bar": "222",
"sun": "777",
"ListofStrings": [
  "CAT",
  "PLANE"
 ],
"ID": "HAHA"
}
]

JOLT SPE C Это то, что Я работал с этим, распечатывая ListofStrings, но это тот, который работает стабильно.

[
 {
"operation": "shift",
"spec": {
  "*": {
    "foo": "input[].number",
    "bar": "input[].number",
    "sun": "input[].number",
    "ListofStrings": "input[].List"
  }
}
},
{
"operation": "default",
"spec": {
  "app_id": "test",
  "input": {
    "*": {
      "app_id": "test"
    }
  }
  }
 }
]

ТЕКУЩИЙ ВЫХОД

{
"input" : [ {
"number" : "111"
 }, {
"number" : "222"
}, {
"number" : "333"
}, {
"List" : [ "Dog", "Train" ]
}, {
"number" : "999"
}, {
"number" : "222"
}, {
"number" : "777"
}, {
"List" : [ "Cat", "Car" ]
} ],
"app_id" : "test"
}

ЖЕЛАТЕЛЬНЫЙ ВЫХОД

{
"input" : [ {
"number" : "111"
"List" : [ "Dog", "Train" ]
"ID": "BLAH_foo"
}, {
"number" : "222"
"List" : [ "Dog", "Train" ]
"ID": "BLAH_bar"
}, {
"number" : "333"
"List" : [ "Dog", "Train" ]
"ID": "BLAH_sun"
},  {
"number" : "999"
"List" : [ "Cat", "Car" ]
"ID": "HAHA_foo"
}, {
"number" : "222"
"List" : [ "Cat", "Car" ]
"ID": "HAHA_bar"
}, {
"number" : "777"
"List" : [ "Cat", "Car" ]
"ID": "HAHA_sun"
} ],
"app_id" : "test"
}

1 Ответ

1 голос
/ 24 июня 2020

Отметьте этот SPE c

[
  //Converting list to Map
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ListofStrings": null,
        "*": {
          "@": "@1.number",
          "@(1,ListofStrings)": "@1.list"
        }
      }
    }
  },
  //Shift the number and list to the input array
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "input[#2].number",
        "@(0,list)": "input[#2].List"
      }
    }
  }, {
    "operation": "default",
    "spec": {
      "app_id": "test",
      "input": {
        "*": {
          "app_id": "test"
        }
      }
    }
 }
]

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

Добавьте узел ID на карту, используя операцию первого сдвига "ID": null, и "@(1,ID)": "@1.ID" . Затем переместите узел идентификатора во входной массив во второй операции сдвига "@(0,ID)": "input[#2].ID".

[
  //Converting list to Map
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ListofStrings": null,
        "ID": null,
        "*": {
          "@": "@1.number",
          "@(1,ListofStrings)": "@1.list",
          "@(1,ID)": "@1.ID"
        }
      }
    }
  },
  //Shift the number and list to the input array
  {
    "operation": "shift",
    "spec": {
      "*": {
        "$": "input[#2].number",
        "@(0,list)": "input[#2].List",
        "@(0,ID)": "input[#2].ID"
      }
    }
  }, {
    "operation": "default",
    "spec": {
      "app_id": "test",
      "input": {
        "*": {
          "app_id": "test"
        }
      }
    }
 }
]
...