我有一个来自InvokeHTTP的json . 我做了一个Split Json和JoltTransform来获取Key,Values,但我需要将所有Key从Camelcase更改为snakecase .
每个InvokeHttp调用我的密钥都不同 . 我已经尝试过AttributestoJson和EvaluateJsonPath以及一些替换文本,但还没有找到一种方法来动态更改键,然后合并回值而无需编写自定义处理器 .
来自InvokeHTTP的原始数据:
{
"data": {
"Table": [
{
"Age": 51,
"FirstName": "Bob",
"LastName": "Doe"
},
{
"Age": 26,
"FirstName": "Ryan",
"LastName": "Doe"
}
]
}
}
在Split Json之后输入(给我一个单独的流文件中的每个json)和Jolt:
[
{
"Key": "Age",
"Value": 51
},
{
"Key": "FirstName",
"Value": "Bob"
},
{
"Key": "LastName",
"Value": "Doe"
}
]
期望的输出:
{
"data": {
"Table": [
{
"age": 51,
"first_name": "Bob",
"last_name": "Doe"
},
{
"age": 26,
"first_name": "Ryan",
"last_name": "Doe"
}
]
}
}
2 回答
如果您知道这些字段,则可以在原始输入JSON上使用JoltTransformJSON,这样您就不必使用SplitJson,这是一个将执行(显式)字段名称转换的规范:
您也可以使用UpdateRecord,您只需要JsonTreeReader和JsonRecordSetWriter的单独模式 .
我写了an answer to a similar question,使用
ReplaceText
用_
替换JSON键中的.
. 这里可以应用相同的逻辑(模板在链接中可用) . 正如我在该答案中指出的那样,更清晰的解决方案是使用ExecuteScript
,尤其是在大多数脚本语言中,从camelcase到snakecase的转换很容易 .