#json #jolt
Вопрос:
Я пытаюсь перебирать списки внутри списка и формировать единый список с несколькими объектами. Повторяя списки, я в состоянии добиться. Но применение тегов перед повторением списка к каждому объекту не происходит, если в одном списке больше объектов.
Мой запрос на ввод выглядит следующим образом:
[
{
"success": [
{
"id": "4",
"Offers": [
{
"name": "Optional",
"type": {
"id": "1",
"name": "Optional"
},
"productOfferings": [
{
"id": "3",
"name": "Test1"
}
]
},
{
"name": "Default",
"type": {
"id": "2",
"name": "Default"
},
"productOfferings": [
{
"id": "1",
"name": "Test2"
},
{
"id": "2",
"name": "Test3"
}
]
}
]
}
]
}
]
Моя спецификация выглядит так, как показано ниже:
[
{
"operation": "shift",
"spec": {
"*": {
"success": {
"*": {
"Offers": {
"*": {
"name": "[amp;1].[amp;3].typeName",
"type": {
"id": "[amp;2].[amp;4].typeNameId",
"name": "[amp;2].[amp;4].typeNameValue"
},
"productOfferings": {
"*": {
"id": "[amp;3].[amp;1].id",
"name": "[amp;3].[amp;1].name"
}
}
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "[]"
}
}
}
]
Output Received from spec:
[
{
"typeName": "Optional",
"typeNameId": "1",
"typeNameValue": "Optional",
"id": "3",
"name": "Test1"
},
{
"typeName": "Default",
"typeNameId": "2",
"typeNameValue": "Default",
"id": "1",
"name": "Test2"
},
{
"id": "2",
"name": "Test3"
}
]
Но ожидаемый результат, как показано ниже:
[
{
"typeName": "Optional",
"typeNameId": "1",
"typeNameValue": "Optional",
"id": "3",
"name": "Test1"
},
{
"typeName": "Default",
"typeNameId": "2",
"typeNameValue": "Default",
"id": "1",
"name": "Test2"
},
{
"typeName": "Default",
"typeNameId": "2",
"typeNameValue": "Default",
"id": "2",
"name": "Test3"
}
]
Если внутри объекта productOfferings есть еще объекты, я не могу добавить typeName,typeNameId, typeNameValue к фактическому объекту. Пожалуйста, помогите устранить эту проблему.
Комментарии:
1. @Барбарос Ожан спасибо за решение.
2. пожалуйста.
Ответ №1:
Похоже, вам просто нужно собрать все в массив productOfferings, добавляя к каждому ключу общий идентификатор [amp;3].[amp;1]
, такой как
[
{
"operation": "shift",
"spec": {
"*": {
"success": {
"*": {
"Offers": {
"*": {
"productOfferings": {
"*": {
"@(2,name)": "[amp;3].[amp;1].typeName",
"@(2,type.id)": "[amp;3].[amp;1].typeNameId",
"@(2,type.name)": "[amp;3].[amp;1].typeNameValue",
"*": "[amp;3].[amp;1].amp;"
}
}
}
}
}
}
}
}
},
{
"operation": "shift",
"spec": {
"*": {
"*": "[]"
}
}
}
]