缺少单个元素 json 到 json 转换括号的 WSO2 ESB 数组
WSO2 ESB array with single element json to json conversion brackets missing
我正在使用 wso2 esb 4.9 并使用 payloadFactory 元素创建了一个代理并使用 REST 调用它以启动我的 BPMN 流程,但问题是 esb 无法转换单个元素 json 数组,并且 esb 丢弃 json 数组的括号。这是我的代理人:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="InformationIncome"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
<property name="OUT_ONLY" value="true"/>
<payloadFactory media-type="json">
<format>
{
"processDefinitionId":"myProcess:6:25188",
"variables": [
{
"name":"text",
"value":""
}
]
}
</format>
<args>
<arg evaluator="json" expression="$.text"/>
</args>
</payloadFactory>
<header name="Authorization"
scope="transport"
expression="fn:concat('Basic ', base64Encode('admin:admin'))"/>
<log level="full"/>
<store messageStore="InformationIncomeMS"/>
</inSequence>
</target>
<description/>
</proxy>
这是我从 soapUI 请求的内容:
{
"text" : "Hello"
}
我发现我的 json 在 payloadFactory:
之后变成了这样
{
"processDefinitionId":"myProcess:6:25188",
"variables": {
{
"name":"text",
"value":"Hello"
}
}
}
似乎 esb json 转换器删除了具有单个元素的数组的括号。有什么想法吗?
我用 Postman 测试了上面的场景,它工作正常。请查找步骤如下;
添加代理并删除消息存储。 (因为将空消息添加到消息存储中会出现以下错误)
[2016-07-11 13:46:53,291] 错误 - NativeWorkerPool 未捕获异常
java.lang.Error:错误:无法匹配输入
在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.zzScanError(JsonScanner.java:530)
在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.yylex(JsonScanner.java:941)
在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.nextSymbol(JsonScanner.java:310)
在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.next(JsonStreamSourceImpl.java:149)
在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.peek(JsonStreamSourceImpl.java:272)
在 org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:129)
在 org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:132)
在 org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:446)
在 org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.next(AbstractXMLStreamReader.java:456)
在 javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88)
在 org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214)
在 org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:336)
在 org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:199)
在 org.apache.axiom.om.impl.OMNavigator.updateNextNode(OMNavigator.java:140)
在 org.apache.axiom.om.impl.OMNavigator.getNext(OMNavigator.java:112)
在 org.apache.axiom.om.impl.SwitchingWrapper.updateNextNode(SwitchingWrapper.java:1113)
在 org.apache.axiom.om.impl.SwitchingWrapper.(SwitchingWrapper.java:235)
在 org.apache.axiom.om.impl.OMStAXWrapper.(OMStAXWrapper.java:74)
在 org.apache.axiom.om.impl.llom.OMStAXWrapper.(OMStAXWrapper.java:52)
在 org.apache.axiom.om.impl.llom.OMContainerHelper.getXMLStreamReader(OMContainerHelper.java:51)
在 org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElementImpl.java
使用 Postman 并使用 "POST" 命令调用代理服务
在正文中添加 json 内容
- 发送。 ESB 将正确打印带括号的消息。
正如 DilshaniS 所说:
看起来这是 WSO2 ESB 4.9.0 中的一个错误并报告了一个 jira this link
我正在使用 wso2 esb 4.9 并使用 payloadFactory 元素创建了一个代理并使用 REST 调用它以启动我的 BPMN 流程,但问题是 esb 无法转换单个元素 json 数组,并且 esb 丢弃 json 数组的括号。这是我的代理人:
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="InformationIncome"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<log level="full"/>
<property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
<property name="OUT_ONLY" value="true"/>
<payloadFactory media-type="json">
<format>
{
"processDefinitionId":"myProcess:6:25188",
"variables": [
{
"name":"text",
"value":""
}
]
}
</format>
<args>
<arg evaluator="json" expression="$.text"/>
</args>
</payloadFactory>
<header name="Authorization"
scope="transport"
expression="fn:concat('Basic ', base64Encode('admin:admin'))"/>
<log level="full"/>
<store messageStore="InformationIncomeMS"/>
</inSequence>
</target>
<description/>
</proxy>
这是我从 soapUI 请求的内容:
{
"text" : "Hello"
}
我发现我的 json 在 payloadFactory:
之后变成了这样{
"processDefinitionId":"myProcess:6:25188",
"variables": {
{
"name":"text",
"value":"Hello"
}
}
}
似乎 esb json 转换器删除了具有单个元素的数组的括号。有什么想法吗?
我用 Postman 测试了上面的场景,它工作正常。请查找步骤如下;
添加代理并删除消息存储。 (因为将空消息添加到消息存储中会出现以下错误)
[2016-07-11 13:46:53,291] 错误 - NativeWorkerPool 未捕获异常 java.lang.Error:错误:无法匹配输入 在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.zzScanError(JsonScanner.java:530) 在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.yylex(JsonScanner.java:941) 在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonScanner.nextSymbol(JsonScanner.java:310) 在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.next(JsonStreamSourceImpl.java:149) 在 org.apache.synapse.commons.staxon.core.json.stream.impl.JsonStreamSourceImpl.peek(JsonStreamSourceImpl.java:272) 在 org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:129) 在 org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.consume(JsonXMLStreamReader.java:132) 在 org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.hasNext(AbstractXMLStreamReader.java:446) 在 org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.next(AbstractXMLStreamReader.java:456) 在 javax.xml.stream.util.StreamReaderDelegate.next(StreamReaderDelegate.java:88) 在 org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681) 在 org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) 在 org.apache.axiom.om.impl.llom.OMElementImpl.getNextOMSibling(OMElementImpl.java:336) 在 org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:199) 在 org.apache.axiom.om.impl.OMNavigator.updateNextNode(OMNavigator.java:140) 在 org.apache.axiom.om.impl.OMNavigator.getNext(OMNavigator.java:112) 在 org.apache.axiom.om.impl.SwitchingWrapper.updateNextNode(SwitchingWrapper.java:1113) 在 org.apache.axiom.om.impl.SwitchingWrapper.(SwitchingWrapper.java:235) 在 org.apache.axiom.om.impl.OMStAXWrapper.(OMStAXWrapper.java:74) 在 org.apache.axiom.om.impl.llom.OMStAXWrapper.(OMStAXWrapper.java:52) 在 org.apache.axiom.om.impl.llom.OMContainerHelper.getXMLStreamReader(OMContainerHelper.java:51) 在 org.apache.axiom.om.impl.llom.OMElementImpl.getXMLStreamReader(OMElementImpl.java
使用 Postman 并使用 "POST" 命令调用代理服务
在正文中添加 json 内容
- 发送。 ESB 将正确打印带括号的消息。
正如 DilshaniS 所说: 看起来这是 WSO2 ESB 4.9.0 中的一个错误并报告了一个 jira this link