JOLT转换:合并两行数据且不生成数组
问题:合并JSON数组中DETAIL字段为单个字符串值
源数据
[ { "DETAIL": "<html><head><style>table {border-collapse: collapse; width: 60%; table-layout: fixed;} html,body,h1,h2,h3,h4,h5 </style></head><body>" }, { "DETAIL": "<body><br><br><h2>CRUDs</h2><table> <tr><th style=\"width:40%\">TABLE_NAME</th><th style=\"width:30%\">INSERTS</th><th style=\"width:30%\">UPDATES</th><tr><td>CONTACT</td></body></html>" } ]
期望输出
{ "DETAIL" : "<html><head><style>table {border-collapse: collapse; width: 60%; table-layout: fixed;} html,body,h1,h2,h3,h4,h5 </style></head><body><body><br><br><h2>CRUDs</h2><table> <tr><th style=\"width:40%\">TABLE_NAME</th><th style=\"width:30%\">INSERTS</th><th style=\"width:30%\">UPDATES</th><tr><td>CONTACT</td></body></html>" }
当前配置及问题
使用以下JOLT配置时,虽能实现内容拼接,但DETAIL值会以数组形式返回:
[ { "operation": "shift", "spec": { "*": { "DETAIL": "DETAIL" } } } ]
返回结果:
{ "DETAIL" : ["<html><head><style>table {border-collapse: collapse; width: 60%; table-layout: fixed;} html,body,h1,h2,h3,h4,h5 </style></head><body><body><br><br><h2>CRUDs</h2><table> <tr><th style=\"width:40%\">TABLE_NAME</th><th style=\"width:30%\">INSERTS</th><th style=\"width:30%\">UPDATES</th><tr><td>CONTACT</td></body></html>"] }
解决方案
在原有shift操作后,添加modify-overwrite-beta操作,将DETAIL数组拼接为单个字符串:
[ { "operation": "shift", "spec": { "*": { "DETAIL": "DETAIL" } } }, { "operation": "modify-overwrite-beta", "spec": { "DETAIL": "=join('', @(1,DETAIL))" } } ]
说明
- 第一步shift操作:遍历数组中的每个对象,将所有DETAIL字段的值收集到一个数组中。
- 第二步modify-overwrite-beta操作:使用
join函数,以空字符串为分隔符,将DETAIL数组中的元素拼接成单个字符串,覆盖原有的数组值。
内容的提问来源于stack exchange,提问作者Shano
相关产品推荐
相关产品推荐

