1

我有一个 json 有效负载,我在其中抓取一个 addressLine 字段:

<property expression="json-eval($.addressLine)" name="addressLine" scope="default" type="STRING"/>

然后我有一个过滤器来检查该字段是否存在,如果它丢失,我有一些额外的逻辑可以运行。

<filter regex="false" source="boolean(get-property('addressLine1'))">
   <then>
      ...
   </then>
</filter>

但是,当 addressLine 值为空格 (" ") 时,此逻辑无法正常工作。我对 WSO2 EI 还是很陌生,我一直在网上四处寻找,但还没有看到任何从房产中“修剪”空间的方法,所以我很好奇这是否可能?如果没有,处理这个问题的最佳方法是什么?我知道理想的解决方案是事先不允许任何空白空间值,但由于 json 有效负载是从不同的服务外部进来的,所以这不是一个选择。

4

1 回答 1

1

在 wso2 中用于“修剪”空间,您可以使用 xpath 函数(规范化空间和翻译)。因此,对于您的 addressLine 属性,它应该如下所示:

    <property expression="translate(normalize-space($ctx:addressLine), ' ', '')"
              name="trimAddress" 
              scope="default" type="STRING"/>

与从属性中获取值的$ctx:addressLine工作相同get-property()但具有更好的性能。

对于过滤器,我更喜欢使用下面的 xpath 表示法,但这是个人喜好。

<filter xpath="$ctx:trimAddress = ''">
   <then>
   ...
   </then>
   <else/>
</filter>
于 2021-06-02T06:00:52.990 回答