如何在 JOLT 中使用带有修改覆盖测试版的条件

问题描述 投票:0回答:1

我正在寻找使用

modify-overwrite-beta
操作,但遇到错误。
OVERWRITR cannot have TransposePathElement RHS

我研究了解决方案,发现了一个“几乎”有效的解决方案。 输入

{ "panelTypes": [ "NUTRITION_FACTS" ], "jolt_numberPerPack": 25, "jolt_factPanel": { "nutrition": { "serving": { "numberPerPack": 12 } } } }

震动

[ { "operation": "modify-overwrite-beta", "spec": { "panelTypes": { "*": { "NUTRITION_FACTS": { "@(3,jolt_factPanel)": { "nutrition": { "serving": { "numberPerPack": "@(7,jolt_numberPerPack)" } } } } } } } } ]

我相信错误来自我对字段的 
@(3,jolt_factPanel)

引用,但我需要这样做,因为我想在继续操作之前验证传入的 json 是否具有必填字段。

我尝试的解决方案是使用 

?

运算符。

摇晃示例:

[ { "operation": "modify-overwrite-beta", "spec": { "jolt_factPanel?": { "nutrition?": { "serving?": { "numberPerPack?": "@(4,jolt_numberPerPack)" } } } } } ]

如果没有面板类型,则 
jolt_factPanel.nutrition

默认为

null
。如果是这种情况,那么经过上面的颠簸后得到的物体,它看起来就像下面的样子。这并不完全是我们想要的,因为我们希望该对象保留
null
    "factPanel": {
        "nutrition": {}
    }

如有任何帮助,我们将不胜感激!

json transformation jolt
1个回答
0
投票

[ { "operation": "shift", "spec": { "*": "&", "panelTypes": { "*": { "@": "&2[]", "NUTRITION_FACTS": { "#true": "hasTag" } } } } }, { "operation": "modify-default-beta", "spec": { "hasTag": false } }, { "operation": "shift", "spec": { "panelTypes|jolt_numberPerPack": "&", "hasTag": { "true": { "@(2,jolt_numberPerPack)": "jolt_factPanel.nutrition.serving.numberPerPack" }, "*": { "@(2)": { "jolt_factPanel": { "nutrition": { "serving": { "numberPerPack": "&3.&2.&1.&" } } } } } } } } ]

	
© www.soinside.com 2019 - 2024. All rights reserved.