#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[]" } } ]