【问题标题】:Jolt transformation using shift,default operations使用移位的颠簸变换,默认操作
【发布时间】:2019-04-01 16:27:21
【问题描述】:
Input
{
  "name": "Karan",
  "age": 25,
  "contact": {
    "email": "abc@gmail.com"
  },
  "details": [
    {
      "contact": {
        "firstName": "karan",
        "lastName": "singh"
      },
      "phone": "5555555555",
      "email": "karan@gmail.com",
      "address": {
        "line1": "123",
        "city": "bangalore",
        "state": "karnataka",
        "country": "india",
        "zip": "570089"
      }
    }
  ],
  "shippingTo": {
    "contact": {
      "name": {
        "firstName": "5505",
        "lastName": "5505"
      },
      "phone": null,
      "email": null
    },
    "address": {
      "line1": "2100 88th St",
      "city": "Mumbai",
      "state": "Maharashtra",
      "country": "India",
      "zip": "07047"
    }
  },
  "fulfillmentLines": [
    {
      "chargeDetails": [
        {
          "chargeCategory": "PRODUCT",
          "chargeName": "ItemPrice",
          "chargePerUnit": {
            "currencyAmount": 34.96,
            "currencyUnit": "USD"
          },
          "isDiscount": false,
          "taxDetails": {
            "taxPerUnit": {
              "currencyAmount": 2.4,
              "currencyUnit": "USD"
            },
            "taxPerLine": {
              "currencyAmount": 2.4,
              "currencyUnit": "USD"
            }
          }
        }
      ],
      "lineDates": {
        "minDeliveryDate": "2019-01-10T00:30:12+00:00",
        "maxDeliveryDate": "2019-02-10T00:30:12+00:00",
        "orderProcessingDate": "2019-03-10T00:30:12+00:00",
        "preciseDeliveryDate": "2019-04-17T01:30:12+00:00"
      }
    }
  ]
}

Output:
{
  "contact": {
    "name": "Karan",
    "age": 25,
    "isTestMode": false //How to set it to true if the input Json contact.email contains "abc"
  },
  "contactDetails": [  //Shud pick from "details" input json
    {
      "personalInfo": {
        "address": {
          "line1": 123,
          "city": "bangalore",
          "state": "karnataka",
          "country": "india",
          "zip": "570089",
          "isLoadingAvailable": false //How to Set it to default value false in each contactDetails list
        },
        "contact": {
          "firstName": "karan",
          "lastName": "singh",
          "completeName": "karan singh"
        },
        "phone": "5555555555",
        "email": "karan@gmail.com"
      }
    }
  ],
  "orderLines": [
    {
      "shipToAddress": { // How to pick from the same "shippingTo" input json for each orderLines list
        "address": {
          "addressLineOne": "2100 88th St",
          "city": "Mumbai",
          "countryCode": "India",
          "postalCode": "07047",
          "stateOrProvinceCode": "Maharashtra"
        },
        "name": {
          "firstName": "5505",
          "lastName": "5505"
        },
        "phone": {
          "completeNumber": null
        },
        "email": {
          "emailAddress": null
        }
      },
      "charges": [  //Shud pick from "fulfillmentLines.chargeDetails" input json
        {
          "chargeCategory": "PRODUCT",
          "chargeName": "ItemPrice",
          "chargePerUnit": {
            "currencyAmount": 0,
            "currencyUnit": "USD"
          },
          "isDiscount": false,
          "tax": [       //How to convert it to array as its an object(fulfillmentLines.0.chargeDetails.0.taxDetails) in input json
            {
              "taxName": "Tax1",  //How to Set it to default value "Tax1" in each "tax" list
              "taxPerLine": {
                "currencyAmount": 2.15,
                "currencyUnit": "USD"
              },
              "taxPerUnit": {
                "currencyAmount": 2.15,
                "currencyUnit": "USD"
              }
            }
          ]
        }
      ],
      "orderedLineDates": [ //Shud pick from "fulfillmentLines.lineDates" input json
        {
          "dateTypeId": "DELIVERY",
          "minExpectedDate":"2019-01-10T00:30:12+00:00",//Shud pick from minDeliveryDate
          "maxExpectedDate": "2019-02-10T00:30:12+00:00",//Shud pick from maxDeliveryDate
          "expectedDate": "2019-04-17T01:30:12+00:00"//Shud pick from preciseDeliveryDate
        },
        {
          "dateTypeId": "OPD",
          "requestedDate": "2019-03-10T00:30:12+00:00",//Shud pick from orderProcessingDate
          "expectedDate": "2019-03-10T00:30:12+00:00"//Shud pick from orderProcessingDate
        }
      ]
    }
  ]
}

同样需要 jolt 规格。另外请建议任何好的教程都可以使用。 需要下面的信息。 1.在列表中添加默认值 2.根据其他字段的条件设置字段值 3.字符串追加功能可以在JOLT中使用吗? 4.将对象转为数组

您能推荐一下同样的 JOLT 规格吗?

【问题讨论】:

    标签: java jolt


    【解决方案1】:

    我正在从这个网站学习 - http://jolt-demo.appspot.com - 很少有非常有用的例子。
    第二个来源是https://github.com/bazaarvoice/jolt/issues页面上的文档和查看问题
    下面是Spec,看看是不是你说的,下面是一些cmets-希望你理解其余的:

    [
      {
        "operation": "shift",
        "spec": {
          "name": "contact.name",
          "age": "contact.age",
          "contact": {
            "email": {
              "abc": { // here you check if it is "abc" value
                "#true": "contact.isTestMode" // # it makes that after it you puts default value
              },
              "*": { // and here you check any other values
                "#false": "contact.isTestMode"
              }
            }
          },
          "details": {
            "*": {
              "address": {
                "@": "contactDetails[&2].personalInfo.&",
                "#false": "contactDetails[&2].personalInfo.address.isLoadingAvailable"
              },
              "contact": "contactDetails[&1].personalInfo.&",
              "phone": "contactDetails[&1].personalInfo.phone",
              "email": "contactDetails[&1].personalInfo.email"
            }
          },
          "shippingTo": {
            "address": {
              "line1": "orderLines[#].shipToAddress.address.addressLineOne", // [#] it allows to put values to the same object
              "city": "orderLines[#].shipToAddress.address.city",
              "country": "orderLines[#].shipToAddress.address.countryCode",
              "zip": "orderLines[#].shipToAddress.address.postalCode",
              "state": "orderLines[#].shipToAddress.address.stateOrProvinceCode"
            },
            "contact": {
              "name": "orderLines[#].shipToAddress.&",
              "phone": "orderLines[#].shipToAddress.phone.completeNumber",
              "email": "orderLines[#].shipToAddress.email.emailAddress"
            }
          },
          "fulfillmentLines": {
            "*": {
              "chargeDetails": {
                "*": {
                  "chargeCategory": "orderLines[#].charges[#].chargeCategory",
                  "chargeName": "orderLines[#].charges[#].chargeName",
                  "chargePerUnit": "orderLines[#].charges[#].&",
                  "isDiscount": "orderLines[#].charges[#].isDiscount",
                  "#Tax1": "orderLines[#].charges[#].tax[#].taxName",
                  "taxDetails": {
                    "*": "orderLines[#].charges[#].tax[#].&"
                  }
                }
              },
              "lineDates": {
                "#DELIVERY": "orderLines[#].orderedLineDates[0].dateTypeId",
                "minDeliveryDate": "orderLines[#].orderedLineDates[0].minExpectedDate",
                "maxDeliveryDate": "orderLines[#].orderedLineDates[0].maxExpectedDate",
                "preciseDeliveryDate": "orderLines[#].orderedLineDates[0].expectedDate",
                "#OPD": "orderLines[#].orderedLineDates[1].dateTypeId",
                "orderProcessingDate": ["orderLines[#].orderedLineDates[1].requestedDate", "orderLines[#].orderedLineDates[1].expectedDate"]
              }
            }
          }
        }
      },
      {
        "operation": "modify-default-beta",
        "spec": {
          "contactDetails": {
            "*": {
              "personalInfo": {
                "contact": {
                  "completeName": "=concat(@(1,firstName),' ',@(1,lastName))"
                }
              }
            }
          }
        }
      }
    ]
    

    【讨论】:

    • 这正是我想要的。非常详细的 JOLT 规格。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    相关资源
    最近更新 更多