Jolt 将所有 0 值更新为 1

Jolt update all 0 value to 1

我想知道在 Jolt 中,我如何计算需要向上移动的级别数才能获得所需的数据。 我尝试使用 Jolt 规范将“数量”中的值从 0 转换为 1

输入

{
  "items": [
    {
      "product": {
        "name": "product1",
        "id": "001"
      },
      "quantity": 1
    },
    {
      "product": {
        "name": "product2",
        "id": "002"
      },
      "quantity": 0
    },
    {
      "product": {
        "name": "product3",
        "id": "003"
      },
      "quantity": 0
    }
  ]
}

预期输出

{
  "items": [
    {
      "product": {
        "name": "product1",
        "id": "001"
      },
      "quantity": 1
    },
    {
      "product": {
        "name": "product2",
        "id": "002"
      },
      "quantity": 1
    },
    {
      "product": {
        "name": "product3",
        "id": "003"
      },
      "quantity": 1
    }
  ]
}

Jolt 规格 附上我理解的一些注释。

[
  {
    "operation": "shift",
    "spec": {
      "items": {
        "*": {                            
          "quantity": {                   
            "0": {                        
              "#1": "items.[&3].quantity" //[&3] => I move 3 levels up to items.* to get index?
            },
            "*": {
              "@(2,quantity)": "items.[&3].quantity" //@(2,quantity) => I move 2 levels up to get items.*.quantity value?
            }
          },
          "*": "items.[&1].&" //[&1] => I move 1 level up to items.* to get index?
        }
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "items": {
        "*": {
          "quantity": "=toInteger(@(1,quantity))"
        }
      }
    }
  }
]

我的理解正确吗?请指教

谢谢你

据我了解,您想将 items 数组中的第一个 quantity 值反映到其他对象的所有其他 quantity 值。然后你可以使用这些移位转换:

[
  {
    "operation": "shift",
    "spec": {
      "items": {
        "0": {
          "@": "&"
        },
        "*": {
          "@(0,product)": "&.product",
          "@(2,&1[0].quantity)": "&.quantity"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "items"
    }
  }
]