基于条件使用Jolt修改JSON:非空值拼接EUR需求求助
Jolt配置实现非空字段拼接EUR
需求
仅当字段值非空时,将字段值与"EUR"拼接;空值字段保持原样,不做修改。
原JSON数据
{"id": "4583","price": "149.99","sale_price": ""}
期望输出
{"id": "4583","price": "149.99 EUR","sale_price": ""}
错误的Jolt配置
{"operation": "modify-overwrite-beta","spec": {"price": "=concat(@(1,price),' EUR')","sale_price": ["=isNull", "=concat(@(1,sale_price),' EUR')"]}}
错误原因
原配置中sale_price的逻辑错误:Jolt里["=isNull", "=concat(...)"]的含义是如果=isNull(@(1,sale_price))返回true,就使用第二个表达式的值。但空字符串""不属于null,=isNull会返回false,因此会执行concat,把空字符串和"EUR"拼接成" EUR",不符合需求。
正确的Jolt配置
{ "operation": "modify-overwrite-beta", "spec": { "price": ["=ifelse(notNull(@(1,price)) && @(1,price) != '', concat(@(1,price),' EUR'), @(1,price))"], "sale_price": ["=ifelse(notNull(@(1,sale_price)) && @(1,sale_price) != '', concat(@(1,sale_price),' EUR'), @(1,sale_price))"] } }
配置说明
使用=ifelse函数做条件判断:
- 先判断字段值非null且不为空字符串:
notNull(@(1,字段名)) && @(1,字段名) != '' - 如果满足条件,执行
concat拼接字段值和" EUR" - 不满足条件时,直接保留原字段值(空字符串或null)
内容的提问来源于stack exchange,提问作者shelby
相关产品推荐
相关产品推荐

