通过使用丰富介体在WSO2 EI中向json有效负载动态添加新元素

问题描述 投票:1回答:1

我需要用新元素丰富现有的json有效负载,该元素动态传递给现有有效负载而不是静态值。谁能帮我吗?

现有有效负载:

{
  "Type":"CAR",
  "Identifier":"2db23c39-9d3f-4e61-b3c5-e8725a2f1b90",
  "ListingType":"New",
  "SaleStatus":"For Sale"
}

Expected:

{
  "Type":"CAR",
  "Identifier":"2db23c39-9d3f-4e61-b3c5-e8725a2f1b90",
  "ListingType":"New",
  "SaleStatus":"For Sale",
  "messageId":"urn:uuid:ccdafb72-c4"
}

这里messageId是ESB自动生成的MessageID。

 <!-- ************API Request set to incomingRequest property************ -->
 <property description="incomingRequest" expression="json-eval($.)" name="incomingRequest" 
 scope="default" type="STRING"/>
<payloadFactory media-type="json">
    <format>$1</format>
    <args>
        <arg evaluator="xml" expression="get-property('incomingRequest')"/>
    </args>
</payloadFactory>
<enrich description="">
    <source type="inline" clone="true">
        <messageId xmlns="">evaluate(get-property('operation','messageId')) 
  </messageId>
    </source>
    <target action="child" xpath="//jsonObject" />
</enrich>
<enrich>
    <source clone="true" xpath="//jsonObject" />
    <target type="body" />
</enrich>
 <log level="full"/>

**Getting Wrong output** 

{
  "Type":"CAR",
  "Identifier":"2db23c39-9d3f-4e61-b3c5-e8725a2f1b90",
  "ListingType":"New",
  "SaleStatus":"For Sale",
  "messageId": "evaluate(get-property('operation','messageId'))"
}

注意:我关注了this

json wso2ei
1个回答
0
投票

不评估Rich Mediator上的内联内容。 (视为字符串)因此,我们可以使用属性介体来评估表达式。

<property name="prop1" expression="get-property('operation','messageId')"/>

然后,我们可以在富媒体中使用以上属性。

<enrich description="">
    <source type="property" property="prop1"></source>
    <target action="child" xpath="//jsonObject" />
</enrich>

BTW,在最新产品版本中,Enrich介体具有本机JSON支持。Here中的更多详细信息>

© www.soinside.com 2019 - 2024. All rights reserved.