我正在寻找使用
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": {}
}
如有任何帮助,我们将不胜感激!
[
{
"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.&"
}
}
}
}
}
}
}
}
]