用 wso2 中的 json 值填充负载

Populate payload with json values in wso2

我遇到了负载问题。我关注了 https://docs.wso2.com/display/ESB500/Exposing+Several+Services+as+a+Single+Service

但无法创建合适的负载

<log level="custom">
        <property expression="fn:concat('VIN: ',get-property('vin'),' ModelName: ',get-property('modelName'),' Year: ',get-property('modelYear'))" name="vechicle"/>
</log>

<payloadFactory description="VIN message" media-type="json">
  <format>{&#xd;
    "VIN":,&#xd;
    }</format>
  <args>
  <arg evaluator="xml" expression="$ctx:vin"/>
</args>
</payloadFactory>

get-属性('vin') 正在工作,因为我在日志中看到它但负载没有用实际值替换 $1,评估

有问题

错误信息:

Could not get parser from data source for element jsonObject
TID[-1234] [ESB] [2017-03-07 23:46:37,611] ERROR {org.apache.axiom.om.impl.llom.OMSourcedElementImpl} - Could not get parser from data source for element jsonObject org.apache.synapse.commons.staxon.core.base.AbstractXMLStreamReader.initialize(AbstractXMLStreamReader.java:245) org.apache.synapse.commons.staxon.core.json.JsonXMLStreamReader.(JsonXMLStreamReader.java:66) org.apache.synapse.commons.staxon.core.json.JsonXMLInputFactory.createXMLStreamReader(JsonXMLInputFactory.java:165) org.apache.synapse.commons.json.JsonUtil.getReader(JsonUtil.java:302) org.apache.synapse.commons.json.JsonDataSource.getReader(JsonDataSource.java:153) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getDirectReader(OMSourcedElementImpl.java:225) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.forceExpand(OMSourcedElementImpl.java:254) org.apache.axiom.om.impl.llom.OMSourcedElementImpl.getFirstOMChild(OMSourcedElementImpl.java:867) org.apache.axiom.om.impl.OMNavigator._getFirstChild(OMNavigator.java:196) 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:736) org.apache.axiom.om.impl.llom.OMElementImpl.cloneOMElement(OMElementImpl.java:1038) org.apache.synapse.util.MessageHelper.cloneSOAPEnvelope(MessageHelper.java:690) 

帮助...

问题似乎出在 JSON 消息中。首先,JSON 消息本身的格式无关紧要,因此回车 return 应该被废弃。然而,这似乎不是问题所在。其次,在 $1 之后有一个逗号,这表明将有另一个对象,但有一个回车符 return,然后是右括号,这实际上破坏了解析器:。我会像这样尝试(虽然你可以把马车 returns 留在里面,我已经在 ESB 5.0.0 上测试过)

<payloadFactory description="VIN message" media-type="json">
  <format>{
    "VIN":
    }</format>
  <args>
  <arg evaluator="xml" expression="$ctx:vin"/>
</args>
</payloadFactory>

此外,如果 vin 是一个字符串,那么您可能还需要在您的格式中添加引号。