[英]Dynamically add new element to json payload in WSO2 EI by using enrich mediator
我需要使用动态传递给现有有效负载而不是 static 值的新元素来丰富现有的 json 有效负载。 谁能帮帮我吗?
现有有效载荷:
{
"Type":"CAR",
"Identifier":"2db23c39-9d3f-4e61-b3c5-e8725a2f1b90",
"ListingType":"New",
"SaleStatus":"For Sale"
}
预期的:
{
"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'))"
}
注意:我遵循了这个
不评估丰富介体上的内联内容。 (视为字符串)因此,我们可以使用属性中介器来评估表达式。
<property name="prop1" expression="get-property('operation','messageId')"/>
然后我们可以在丰富中介者中使用上述属性。
<enrich description="">
<source type="property" property="prop1"></source>
<target action="child" xpath="//jsonObject" />
</enrich>
顺便说一句,在最新的产品版本中,Enrich 调解器具有原生 JSON 支持。 更多细节在这里
我有类似的情况,我想 append 一些元素到收到的 json 响应:
首先我收到了一个属性的响应: property expression="json-eval($)" name="RESPONSE" scope="default" type="STRING"
然后我创建了一个有效负载并添加了新属性:
<payloadFactory media-type="json">
<format>
{"details": $1,
"timestamp":"$2",
"value":"$3"}
</format>
<args>
<arg evaluator="xml"
expression="get-property('RESPONSE')" />
<arg evaluator="xml"
expression="get-property('REQUEST_TIMESTAMP')" />
<arg evaluator="xml"
expression="get-property('VALUE')" />
</args>
</payloadFactory>
然后我使用环回返回响应。 请注意,REQUEST_TIMESTAMP 和 VALUE 被定义为属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.