最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

WSO2 MI: XPathSyntaxException in PayloadFactory using json-eval() - Stack Overflow

programmeradmin2浏览0评论

I'm working with WSO2 Micro Integrator (WSO2 MI) and trying to iterate over a JSON payload to extract values dynamically. However, I'm encountering the following error when using json-eval() inside a payloadFactory mediator

[2025-02-09 11:23:01,263] ERROR {PayloadFactoryMediatorFactory} - Invalid XPath expression for attribute expression : $.client_id org.jaxen.XPathSyntaxException: Expected: (identifier) Caused by: class org.jaxen.saxpath.XPathSyntaxException: $.client_id: 1: Expected: (identifier)

<iterate expression="json-eval($)">
<target>
<sequence>
<log level="custom">
<property expression="json-eval($.tokenEndpoint)" name="tokenEndpoint"/>
</log>
<!-- Set Headers & Body for Token Request -->
<property name="Content-Type" scope="transport" type="STRING" value="application/x-www-    form-urlencoded"/>
<property name="Accept" scope="transport" type="STRING" value="application/json"/>
<!-- Extract API Credentials -->
<property expression="json-eval($.tokenEndpoint)" name="TokenEndpoint" scope="default"     type="STRING"/>
<property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING"/>
<property expression="json-eval($.client_secret)" name="client_secret" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>{"client_id":"$1","client_secret":"$2"}</format>
<args>
<arg evaluator="xml" expression="$.client_id"/>
 <arg evaluator="xml" expression="$.client_secret"/>
</args>
</payloadFactory>
<log level="full">
<property expression="json-eval($.body)" name="Token Request Payload"/>
</log>
</sequence>
</target>
</iterate>

I'm working with WSO2 Micro Integrator (WSO2 MI) and trying to iterate over a JSON payload to extract values dynamically. However, I'm encountering the following error when using json-eval() inside a payloadFactory mediator

[2025-02-09 11:23:01,263] ERROR {PayloadFactoryMediatorFactory} - Invalid XPath expression for attribute expression : $.client_id org.jaxen.XPathSyntaxException: Expected: (identifier) Caused by: class org.jaxen.saxpath.XPathSyntaxException: $.client_id: 1: Expected: (identifier)

<iterate expression="json-eval($)">
<target>
<sequence>
<log level="custom">
<property expression="json-eval($.tokenEndpoint)" name="tokenEndpoint"/>
</log>
<!-- Set Headers & Body for Token Request -->
<property name="Content-Type" scope="transport" type="STRING" value="application/x-www-    form-urlencoded"/>
<property name="Accept" scope="transport" type="STRING" value="application/json"/>
<!-- Extract API Credentials -->
<property expression="json-eval($.tokenEndpoint)" name="TokenEndpoint" scope="default"     type="STRING"/>
<property expression="json-eval($.client_id)" name="client_id" scope="default" type="STRING"/>
<property expression="json-eval($.client_secret)" name="client_secret" scope="default" type="STRING"/>
<payloadFactory media-type="json">
<format>{"client_id":"$1","client_secret":"$2"}</format>
<args>
<arg evaluator="xml" expression="$.client_id"/>
 <arg evaluator="xml" expression="$.client_secret"/>
</args>
</payloadFactory>
<log level="full">
<property expression="json-eval($.body)" name="Token Request Payload"/>
</log>
</sequence>
</target>
</iterate>
Share Improve this question asked yesterday RoyRoy 212 bronze badges 1
  • Correctly format errors – Starship Commented 20 hours ago
Add a comment  | 

1 Answer 1

Reset to default 1

Reason for the issue is using a JSON-Path expression with evaluator="xml". When evaluator="xml" its expecting a XPATH expression.

I don't see any requirement to use evaluators of type xml when the payload factory media type is JSON.

We can configure as follows.

<payloadFactory media-type="json">
<format>{"client_id":"$1","client_secret":"$2"}</format>
<args>
<arg evaluator="json" expression="$.client_id"/>
 <arg evaluator="json" expression="$.client_secret"/>
</args>
</payloadFactory>
发布评论

评论列表(0)

  1. 暂无评论