Jolt Преобразует карту спецификаций JSON с динамическими значениями и заголовками

#json #jolt

Вопрос:

Мне нужно преобразовать ниже входной JSON в выходной JSON и не уверен, как написать спецификацию для этого вывода. сравнение значений файлов в преобразовании JOLT

Ввод:

 {  "response": {  "body": {  "variables": {  "swapOfferResult": {  "value": {  "EcomResponse": {  "ConfigurationsResponse": {  "productConfigurations": [  {  "productConfiguration": {  "productSpecification": {  "description": "Testing Sample 1",  "id": "1776911"  },  "productOffering": {  "description": "First sample description",  "name": "First sample",  "id": "1777341"  }  }  },  {  "productConfiguration": {  "productSpecification": {  "description": "Testing Sample 2",  "id": "247541"  },  "productOffering": {  "description": "Second sample description",  "name": "second sample",  "id": "735501"  }  }  },  {  "productConfiguration": {  "productSpecification": {  "description": "Testing Sample 3",  "id": "280801"  },  "productOffering": {  "description": "Third sample description",  "name": "Third sample",  "id": "735501"  }  }  }  ]  }  }  }  }  }  }  } }  

Ожидаемый Результат:

В разделе заголовка необходимо указать имя , описание и идентификатор. Любое предложение будет высоко оценено. В разделе заголовка необходимо указать имя , описание и идентификатор. Любое предложение будет высоко оценено.

 {  "body": [  {  "id": "1777341",  "description": "First sample description",  "name": "First sample",  "products": [  {  "id": "1776911",  "description": "Testing Sample 1"  }  ]  },  {  "id": "735501",  "description": "second sample description",  "name": "second sample",  "products": [  {  "id": "247541",  "description": "Testing Sample 2"  },  {  "id": "280801",  "description": "Testing Sample 3"  }  ]  }  ] }  

Ответ №1:

Вы можете использовать следующие последовательные спецификации

 [  {  "operation": "shift",  "spec": {  "*": {  "*": {  "*": {  "*": {  "*": {  "*": {  "*": {  "*": {  "*": {  "*": {  "productSpecification": {  "*": "@(2,productOffering.id).products.[amp;3].amp;",  "@(1,productOffering.description)": "@(2,productOffering.id).description",  "@(1,productOffering.name)": "@(2,productOffering.id).name"  }  }  }  }  }  }  }  }  }  }  }  }  },  {  "operation": "shift",  "spec": {  "*": {  "$": "amp;1.id",  "*": "amp;1.amp;"  }  }  },  {  "operation": "shift",  "spec": {  "*": ""  }  },  {  "operation": "modify-overwrite-beta",  "spec": {  "*": "=recursivelySquashNulls"  }  },  {  "operation": "cardinality",  "spec": {  "*": {  "products": "MANY",  "*": "ONE"  }  }  },  {  "operation": "shift",  "spec": {  "*": "body[]"  }  } ]