【问题标题】:Jolt Transformation returning array when more than one object exists当存在多个对象时,Jolt Transformation 返回数组
【发布时间】:2018-12-12 04:41:08
【问题描述】:

我需要在颠簸转换后低于预期的 json 响应,但我正在获取字段 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"
  }]
}

【问题讨论】:

    标签: arrays json jolt


    【解决方案1】:

    您必须将数组保存在数组中,然后将其转换为所需的输出:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-06
      • 2022-11-28
      • 1970-01-01
      • 2020-08-30
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多