我在流中获取json并尝试替换有效负载中的一个字段的值。
transform --expression=payload.replaceAll()
不符合我的需求,因为它将有效负载视为String。
我想到了这样的操作
transform --expression=#jsonPath(payload,'$.result.grupy[*].lp')='new_value'
但它不执行此分配。如何构造SPEL / JsonPath表达式来设置新值?
我需要一些像payload.setField(' lp',' new_value')
答案 0 :(得分:0)
不可能这样做;您需要一个自定义处理器模块或自定义SpEL功能来进行类似的更改。
#jsonPath
函数只返回JSON中的一个元素。
答案 1 :(得分:0)
不确定为什么payload.replace()
表达式不符合您的要求,但#jsonPath()
SpEL功能用于extraction
来自JSON的数据,而不是用于修改。
从另一方面,你误解了transformer
组件的概念。它返回一个新对象,但不会修改请求。
为了达到您的要求,您应该查看Content Enricher,其目的是修改传入的payload
并将其作为回复返回。
为简化您的生活,您应该查看<int:object-to-map-transformer>
是否有能力从下一个<int:enricher>
组件更改字段。
是的,为此你应该编写自己的processor
模块。