在SpringXD中使用SPEL替换JSON字段的值

时间:2015-12-09 19:16:11

标签: json spring-xd spring-el jsonpath

我在流中获取json并尝试替换有效负载中的一个字段的值。 transform --expression=payload.replaceAll()不符合我的需求,因为它将有效负载视为String。 我想到了这样的操作

transform --expression=#jsonPath(payload,'$.result.grupy[*].lp')='new_value'

但它不执行此分配。如何构造SPEL / JsonPath表达式来设置新值?

我需要一些像payload.setField(' lp',' new_value')

2 个答案:

答案 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模块。