JOLT转换:在JSON数组中将字符串转换为布尔值

dfuffjeb  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(129)

如果IsCompleted的值是Yes,那么输出值应该是true,如果它是No,那么输出值应该是false

输入

[
  {
    "Id": 1,
    "Name": "Sumit",
    "IsCompleted": "Yes"
  },
  {
    "Id": 2,
    "Name": "Sumit",
    "IsCompleted": "No"
  }
]

JOLT规格

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "IsCompleted": {
          "Yes": {
            "#true": "IsCompleted"
          },
          "No": {
            "#false": "IsCompleted"
          }
        },
        "*": "&"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "IsCompleted": "=toBoolean"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@": "[].&"
      }
    }
  }
]

预期产出

[
  {
    "Id": 1,
    "Name": "Sumit",
    "IsCompleted": true
  },
  {
    "Id": 2,
    "Name": "Sumit",
    "IsCompleted": false
  }
]

实际产量

[
  {
    "Id": [1, 2]
  },
  {
    "Name": ["Sumit", "Sumit"]
  },
  {
    "IsCompleted": [true, false]
  }
]
xytpbqjk

xytpbqjk1#

我只是把你的规范改成了真正的规范。所以你可以使用下面的JOLT规范:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[&1].&",
        "IsCompleted": {
          "Yes": {
            "#true": "[&3].&2"
          },
          "No": {
            "#false": "[&3].&2"
          }
        }
      }
    }
    },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "IsCompleted": "=toBoolean"
      }
    }
  }
]

相关问题