Jolt条件转换需求:MC为OTHER时为PID1添加datatype字段
解决方案
以下是满足需求的Jolt转换规则,当MC字段值为OTHER时,自动为PID1添加datatype="string",其他ID添加datatype="integer",同时移除原输入中的MC字段:
[ { "operation": "shift", "spec": { "MC": { "OTHER": { "@2,mProperty": { "PID1": { "$": "mDefintion.mProperty[#2].id.value", "@": "mDefintion.mProperty[#2].value[0].valueString.value", "#string": "mDefintion.mProperty[#2].datatype" }, "*": { "$": "mDefintion.mProperty[#2].id.value", "@": "mDefintion.mProperty[#2].value[0].valueString.value", "#integer": "mDefintion.mProperty[#2].datatype" } } } } } } ]
关键修正说明
条件触发逻辑
通过"MC": {"OTHER": {...}}嵌套结构,实现仅当MC值为OTHER时才执行后续转换,避免无条件触发。修正ID值错误
原代码中PID1的id.value被硬编码为"piid",改为$表示引用当前节点的键名(即PID1),与其他ID的逻辑保持一致。添加datatype字段
- 对
PID1使用#string生成固定值"string"作为datatype - 对其他ID使用
#integer生成固定值"integer"作为datatype
- 对
移除冗余字段
去掉原代码中的"*": "&"规则,避免保留输入中的MC字段,确保输出仅包含预期的mDefintion结构。
运行结果验证
使用上述规则转换输入后,输出将完全匹配你的预期:
{ "mDefintion": { "mProperty": [ { "id": { "value": "PID1" }, "value": [ { "valueString": { "value": "value1" } } ], "datatype": "string" }, { "id": { "value": "PID2" }, "value": [ { "valueString": { "value": "value2" } } ], "datatype": "integer" }, { "id": { "value": "PID3" }, "value": [ { "valueString": { "value": "k1" } } ], "datatype": "integer" } ] } }
内容的提问来源于stack exchange,提问作者genericcoder
相关产品推荐
相关产品推荐

