Jolt 转换 - 将 JSON 列表中的所有键小写

问题描述

如何将这个json列表中的所有键都转换为小写

[
  {
    "KEY01": "1111","KEY02": "VALUE01","KEY03": true
  },{
    "KEY01": "2222","KEY02": "VALUE02","KEY03": true
  }
]

想要的结果

[
  {
    "key01": "1111","key02": "VALUE01","key03": true
  },{
    "key01": "2222","key02": "VALUE02","key03": true
  }
]

我使用了这个 jolt 转换公式,它只生成一个只将值转换为小写的对象

[
  {
    "operation": "modify-overwrite-beta","spec": {
      "*": {
        "*": "=toLower"
      }
    }
  }
]

结果

[{
    "KEY01": "1111","KEY02": "value01","KEY03": true
},"KEY02": "value02","KEY03": true
}]

解决方法

这会产生想要的结果:

[
  {
    "operation": "shift","spec": {
      "*": {
        "*": {
          "$": "[&2].&1.key","@": "[&2].&1.value"
        }
      }
    }
  },{
    "operation": "modify-overwrite-beta","spec": {
      "*": {
        "*": {
          "key": "=toLower"
        }
      }
    }
  },{
    "operation": "shift","spec": {
      "*": {
        "*": {
          "value": "[&2].@(1,key)"
        }
      }
    }
  }
]

产生以下内容:

[ 
   {
     "key01" : "1111","key02" : "VALUE01","key03" : true
   },{
     "key01" : "2222","key02" : "VALUE02","key03" : true
   }
]