如何在Jolt转换中将JSON值中的点运算符转为嵌套JSON对象?
Jolt转换:将带点的属性名转为嵌套JSON对象
要把target_property中类似comment.body的字符串转成嵌套的JSON结构,你需要在原规则基础上新增拆分属性名的步骤,具体Jolt规则如下:
[ // 拆分target_property为数组,存临时字段 { "operation": "modify-overwrite-beta", "spec": { "field_list": { "*": { "target_parts": "=split('\\.', @(1,target_property))" } } } }, // 构建嵌套路径并整合字段 { "operation": "shift", "spec": { "form_id": "ticket.ticket_form_id", "name": "ticket.requester.name", "email": "ticket.requester.email", "field_list": { "*": { "is_custom_field": { "true": { "@(2,target_property)": "ticket.custom_fields[&3].id", "@(2,value)": "ticket.custom_fields[&3].value" }, "*": { "@(2,value)": "ticket.@(3,target_parts[0]).@(3,target_parts[1])" } } } } } } ]
规则说明:
- 拆分步骤:用
modify-overwrite-beta结合split函数,把每个target_property按.拆分成数组(比如comment.body变成["comment", "body"]),存到临时字段target_parts。 - 构建嵌套:在
shift操作中,通过@(3,target_parts[0])和@(3,target_parts[1])分别引用拆分后的数组元素,将值映射到嵌套的ticket.comment.body路径下。 - 原规则中自定义字段的逻辑保持不变,非自定义字段的路径由拆分后的数组动态生成。
输入示例:
{ "name": "Test", "email": "Test", "form_id": "123", "field_list": [ { "id": 1, "value": "Test Subject", "is_custom_field": false, "target_property": "subject" }, { "id": 2, "value": "Test Description", "is_custom_field": false, "target_property": "comment.body" } ] }
输出结果:
{ "ticket": { "ticket_form_id": "123", "requester": { "name": "Test", "email": "Test" }, "subject": "Test Subject", "comment": { "body": "Test Description" } } }
内容的提问来源于stack exchange,提问作者Dharanidhar
相关产品推荐
相关产品推荐

