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
}
]
}
]
}
需要同样的震动规格。另外,请建议您可以使用任何好的教程。 需要以下信息。 1.在列表中添加默认值 2.根据其他字段的条件设置字段值 3.字符串追加功能可以在JOLT中使用吗? 4.将对象转换为数组
您能推荐相同的JOLT规范吗?
答案 0 :(得分:0)
我正在从这个网站上学习-http://jolt-demo.appspot.com-很少有非常有用的示例。
第二个来源是文档和查看问题,第https://github.com/bazaarvoice/jolt/issues页
下面是Spec,请检查是否满足您的要求,以下是一些评论-我希望您能理解其余内容:
[
{
"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))"
}
}
}
}
}
}
]