【问题标题】:How to remove JSON field from payload factory using WSO2 EI Enrich Mediator?如何使用 WSO2 EI Enrich Mediator 从有效负载工厂中删除 JSON 字段?
【发布时间】:2023-01-13 06:01:02
【问题描述】:

我有一个包含许多字段的有效负载,但我只想将它们不为空的字段发送到后端,所以我尝试使用丰富的调解器来删除那些为空的字段,但我收到了一个错误。

这是我的有效载荷工厂:

                        <payloadFactory media-type="json">
                            <format>
                                {
  "_putupdateuser": {
                 "BADLOGINS": $1,
                 "EMAIL": "$2",
                 "FRAMED_ROUTE": "$3"
                       }
}
</format>
                            <args>
                                <arg evaluator="xml" expression="get-property('BADLOGINS')"/>
                                <arg evaluator="xml" expression="get-property('EMAIL')"/>
                                <arg evaluator="xml" expression="get-property('FRAMED_ROUTE')"/>
                            </args>
                        </payloadFactory>

这是我对 enrich mediator 的实现:

                        <enrich>
                            <source clone="false" xpath="json-eval($._putupdateuser.FRAMED_ROUTE)"/>
                            <target action="remove" type="body"/>
                        </enrich>

这是我得到的错误:

Caused by: com.google.gson.stream.MalformedJsonException: Unexpected value at line 3 column 32 path $._putupdateuser.BADLOGINS
at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1568)

【问题讨论】:

    标签: wso2 wso2-esb wso2-enterprise-integrator


    【解决方案1】:

    根据 documentation,此功能仅作为 WSO2 更新提供。因此,请尝试使用 here 提到的 Script Mediator 之类的解决方案。

    另一种选择是如果值为空则根本不添加元素。您可以在 Filter Mediator 中包含一个 Enrich mediator,如果只有值不为空,您就可以添加该元素。请参阅示例 2 here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-24
      • 2020-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多