我很难为不同的JSON输入编写jolt规范。我需要一个通用的jolt规范,这样我就可以得到一个扁平的json。
输入 1 : 我们有一个材料运动数组
{
"id": "xxxxx",
},
"status": {
"deliveryComplete": "xxxxx",
],
"overallStatusDetail": "xxxxx",
"overallStatus": "xxxxx"
},
"quantity": {
"target": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
}
},
"dates": {
"plannedFinishDate": "xxxxx",
"plannedStartDate": "xxxxx",
"actualFinishDate": "xxxxx"
},
"consumptionFlag": xxxxx,
"billOfMaterials": "xxxxx",
"deletionIndicator": "",
"routingNumber": "xxxxx",
"mainWorkCenter": "xxxxx",
"orderRecipe": "xxxxx",
"item": {
"number": "xxxxx",
"product": {
"id": "xxxxx",
"number": "xxxxx",
"description": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"goodsReceipt": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"storageLocation": {
"code": "xxxxx",
"description": "xxxxx"
}
},
"reservation": {
"id": "xxxxx",
"number": "xxxxx",
},
"materialMovements": [
{
"id": "xxxxx",
"number": "xxxxx",
"postingDate": "xxxxx",
"items": [
{
"number": "xxxxx",
},
"product": {
"id": "xxxxx",
}
}
]
}
}
],
"sourceSystem": "NA"
}
输入2:我们没有物质运动数组
{
"id": "xxxxx",
},
"status": {
"deliveryComplete": "xxxxx",
],
"overallStatusDetail": "xxxxx",
"overallStatus": "xxxxx"
},
"quantity": {
"target": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
}
},
"dates": {
"plannedFinishDate": "xxxxx",
"plannedStartDate": "xxxxx",
"actualFinishDate": "xxxxx"
},
"consumptionFlag": xxxxx,
"billOfMaterials": "xxxxx",
"deletionIndicator": "",
"routingNumber": "xxxxx",
"mainWorkCenter": "xxxxx",
"orderRecipe": "xxxxx",
"item": {
"number": "xxxxx",
"product": {
"id": "xxxxx",
"number": "xxxxx",
"description": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"goodsReceipt": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"storageLocation": {
"code": "xxxxx",
"description": "xxxxx"
}
},
"reservation": {
"id": "xxxxx",
"number": "xxxxx",
},
"sourceSystem": "NA"
}
我已经为输入1使用了joltspec,它工作正常,我需要它也为输入2工作
[
{
"operation": "shift",
"spec": {
"materialMovements": {
"*": {
"@(2,sourceSystem)": "[&1].SourceSystem",
"@(2,number)": "[&1].ProcessOrderNumber",
"@(2,item.number)": "[&1].ProcessOrderLineNumber",
"@(2,item.product.number)": "[&1].MaterialToBeProduced",
"@(2,item.storageLocation.code)": "[&1].StorageLocation",
"@(2,item.goodsReceipt.amount)": "[&1].GoodsReceiptQuantity",
"@(2,locationIdentifier.id)": "[&1].Plant",
"@(2,billOfMaterials)": "[&1].BillOfMaterials",
"@(2,creationDate)": "[&1].CreationDate",
"@(2,dates.plannedFinishDate)": "[&1].PlannedFinishDate",
"@(2,dates.plannedStartDate)": "[&1].plannedStartDate",
"@(2,actualFinishDate)": "[&1].ActualFinishDate",
"@(2,deletionIndicator)": "[&1].DeletionIndicator",
"@(2,quantity.target.amount)": "[&1].OrderQuantity",
"@(2,quantity.target.baseUoM)": "[&1].UOM",
"@(2,quantity.confirmed.amount)": "[&1].ConfirmedQuantity",
"@(2,mainWorkCenter)": "[&1].MainWorkCenter",
"@(2,orderRecipe)": "[&1].OrderRecipe",
"@(2,Message Timestamp)": "[&1].LastModifiedOn",
"@(2,status.overallStatusDetail)": "[&1].StatusDetail",
"@(2,status.overallStatus)": "[&1].Status",
"postingDate": "[&1].ActualDeliveryDate"
}
}
}
}
]
您所采用的方法使其更加复杂:
I am not able to understand the Input Json as it is not proper but I guess this solution will help in resolving your issue :
Input :
{
"quantity": {
"target": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
}
},
"dates": {
"plannedFinishDate": "xxxxx",
"plannedStartDate": "xxxxx",
"actualFinishDate": "xxxxx"
},
"billOfMaterials": "xxxxx",
"deletionIndicator": "",
"routingNumber": "xxxxx",
"mainWorkCenter": "xxxxx",
"orderRecipe": "xxxxx",
"item": {
"number": "xxxxx",
"product": {
"id": "xxxxx",
"number": "xxxxx",
"description": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"goodsReceipt": {
"amount": "xxxxx",
"baseUoM": "xxxxx",
"ISOBaseUoM": "xxxxx"
},
"storageLocation": {
"code": "xxxxx",
"description": "xxxxx"
}
},
"reservation": {
"id": "xxxxx",
"number": "xxxxx"
},
"materialMovements": [
{
"id": "xxxxx",
"number": "xxxxx",
"postingDate": "xxxxx",
"items": [
{
"number": "xxxxx"
},
{
"id": "xxxxx"
}
]
}
],
"sourceSystem": "NA"
}
Jolt Spec :
[
{
"operation": "shift",
"spec": {
"quantity": {
"target": {
"*": "[#4].&"
}
},
"dates": {
"*": "[#3].&"
},
"billOfMaterials": "[#2].&",
"deletionIndicator": "[#2].&",
"routingNumber": "[#2].&",
"mainWorkCenter": "[#2].&",
"orderRecipe": "[#2].&",
"materialMovements": {
"*": {
"id": "[&1].id",
"number": "[&1].number",
"items": {
"*": {
"number": "[&1].no"
}
}
}
}
}
},
//For Flattening Array to Single Json
{
"operation": "shift",
"spec": {
"*": {
"*": "&"
}
}
}
]
我很难为不同的JSON输入编写一个jolt规范。我需要得到一个通用的jolt规范,以便得到一个扁平的json 输入1: 输入2: 需要JSON输出- 单个平展 JSON : 我尝试的Jolt规范适用于输入2,但不适用于输入1: 请帮助我很难为不同的 JSON 输入编写颠簸规范。我需要获得一个通用的颠簸规范,以便我得到一个扁平化的 json
我对震动是新手。我有两个不同的相同结构的输入json集,除了一个对象内部不同的基于decider值,如下所示。
我的输入JSON如下所示,但是我不确定如何使用JOLT进行内部数组相关的参数转换。感谢任何帮助,因为我是新的JOLT 以下是我创建的规范文件,但它并不完整 预期输出如下 我正在使用这个库https://github.com/bazaarvoice/jolt
我正在努力使用 JOLT 转换复杂的 json。 输入JSON: 预期输出: 我无法理解如何在基于“字段名称”的输出中访问和分配“字段值”。请帮我做一下震动测试。 注意:输入JSON中的名称、标题和公司的顺序将是混乱和随机的,这意味着在“data”数组下,第一个对象仅与“Name”相关不是强制性的。
我有以下输入json: 输出JSON应如下所示: 任何人都可以就如何为上述内容构建适当的 Bump 规范提供任何指导吗? 非常感谢您的帮助 ^_^
我正在尝试用以下规格进行JOLT换班操作,这是不起作用的。不知道我犯了什么错误。在这种情况下需要帮助。输出JSON作为一个对象来代替Array,shift也不能按预期工作。