Преобразование Толчка, возвращающее массив, когда существует более одного объекта - PullRequest
0 голосов
/ 12 декабря 2018

Мне нужно получить ниже ожидаемого ответа json после преобразования jolt, но я получаю массив для полей orderId, subId, которые я хочу иметь как часть отдельного объекта для orderItemId.Не могли бы вы помочь мне, если есть какие-либо проблемы с нижеуказанной спецификацией.Я старался изо всех сил, чтобы найти решение, но не смог.Пожалуйста, помогите.

JsonInput:

{
  "Employees": {
    "employees": [
      {
        "employeeDetails": [
          {
            "productName": "Iphone 7 Plus",
            "actionType": "ADD_PHONE",
            "status": "DELIVERY",
            "subId": "sub1",
            "id": "920040222"
          }
        ],
        "status": "SUBMITTED",
        "id": "920040221",
        "currency": "USD"
      },
      {
        "employeeDetails": [
          {
            "productName": "Iphone 7 Plus",
            "actionType": "ADD_PHONE",
            "status": "DELIVERY",
            "subId": "sub2",
            "id": "920040224"
          },
          {
            "productName": "Iphone 8 Plus",
            "actionType": "ADD_PHONE",
            "status": "DELIVERY",
            "subId": "sub3",
            "id": "920040225"
          }
        ],
        "status": "SUBMITTED",
        "id": "920040223",
        "currency": "USD"
      }
    ]
  }
}

Характеристики джолта:

[
  {
    "operation": "shift",
    "spec": {
      "Employees": {
        "employees": {
          "*": {
            "employeeDetails": {
              "*": {
                "actionType": {
                  "ADD_PHONE": {
                    "@(2,productName)": {
                      "Iphone 7 Plus|Iphone 8 Plus": {
                        "@(4,status)": {
                          "*": {
                            "@(6,id)": "ids[].itemId",
                            "@(8,id)": "ids[&9].orderId",
                            "@(6,subId)": "ids[&9].subId"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

Фактический результат:

{
  "ids" : [ {
    "itemId" : "920040222",
    "orderId" : "920040221",
    "subId" : "sub1"
  }, {
    "itemId" : "920040224",
    "orderId" : [ "920040223", "920040223" ],
    "subId" : [ "sub2", "sub3" ]
  }, {
    "itemId" : "920040225"
  } ]
}

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

{
  "ids" : [ {
    "itemId" : "920040222",
    "orderId" : "920040221",
    "subId" : "sub1"
  }, {
    "itemId" : "920040224",
    "orderId" : "920040223",
    "subId" : "sub2"
  }, {
    "itemId" : "920040225",
    "orderId" : "920040223",
    "subId" : "sub3"
  }]
}

1 Ответ

0 голосов
/ 06 февраля 2019

Вы должны сохранить массив в массиве и затем преобразовать его в желаемый результат:

[
  {
    "operation": "shift",
    "spec": {
      "Employees": {
        "employees": {
          "*": {
            "employeeDetails": {
              "*": {
                "actionType": {
                  "ADD_PHONE": {
                    "@(2,productName)": {
                      "Iphone 7 Plus|Iphone 8 Plus": {
                        "@(4,status)": {
                          "*": {
                            "@(6,id)": "[&9].[&7].itemId",
                            "@(8,id)": "[&9].[&7].orderId",
                            "@(6,subId)": "[&9].[&7].subId"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "ids.[]"
      }
    }
  }
]
...