【问题标题】:replace value of JSON field using SPEL in SpringXD在 SpringXD 中使用 SPEL 替换 JSON 字段的值
【发布时间】:2015-12-09 19:16:10
【问题描述】:

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

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

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

我需要类似 payload.setField('lp','new_value')

【问题讨论】:

    标签: json spring-xd spring-el jsonpath


    【解决方案1】:

    这是不可能的;您需要一个自定义处理器模块或一个自定义 SpEL 函数来进行这样的更改。

    #jsonPath 函数只是从 JSON 中返回一个元素。

    【讨论】:

      【解决方案2】:

      不知道为什么payload.replace() 表达式不符合您的要求,但#jsonPath() SpEL 函数用于extraction 来自JSON 的数据,而不是用于修改。

      从另一方面你误解了transformer 组件的概念。它返回一个新对象,但不修改请求。

      为了满足您的要求,您应该查看Content Enricher,它正是为了修改传入的payload 并将其作为回复返回。

      为了简化您的生活,您应该查看<int:object-to-map-transformer>,以便能够从下一个<int:enricher> 组件更改字段。

      对,为此,您应该编写自己的 processor 模块。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-10
        • 1970-01-01
        • 2018-01-27
        • 2016-10-29
        • 2017-01-07
        • 2015-06-29
        • 1970-01-01
        相关资源
        最近更新 更多