0

我想根据需要使用 WSO2 EI 的 Data Mapper Mediator 将来自一个端点的 json 响应转换为另一种 json 格式。来自我的端点的示例 JSON 响应是 -

{
    "CUSTOMER360": {       
            "CUSTOMER_ID": "24339"

    }
}

我希望将其转换为以下格式:

{
    "customer360": {
        "customer": {
            "id": "24339"
        }
    }
}

我创建了一个 ESB 项目并给出了一个简单的工作流来了解如何使用 Data Mapper 中介器。我的 API 代码如下 -

<?xml version="1.0" encoding="UTF-8"?>
<api context="/customerDataAPI" name="CustomerDataMapperAPI" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="POST GET">
        <inSequence>
            <datamapper config="gov:datamapper/CustomerDataConfig.dmc" inputSchema="gov:datamapper/CustomerDataConfig_inputSchema.json" inputType="JSON" outputSchema="gov:datamapper/CustomerDataConfig_outputSchema.json" outputType="JSON"/>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

我已经负责将输入和输出 json 模式加载到 Data Mapper 中介并提供正确的映射。此外,在 Data Mapper 的属性视图中提到输入和输出类型为 JSON,并在 CAR 文件中包含映射相关文件。当我调用我的 API 时 - 我收到此错误:

ERROR - SequenceMediator Runtime error occurred whi
le mediating the message
java.lang.NullPointerException
        at java.io.Reader.<init>(Reader.java:78)
        at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
        at org.wso2.carbon.mediator.datamapper.engine.input.readers.JSONInputRea
der.readFromInputStream(JSONInputReader.java:76)
        at org.wso2.carbon.mediator.datamapper.engine.input.readers.JSONInputRea
der.read(JSONInputReader.java:59)
        at org.wso2.carbon.mediator.datamapper.engine.input.InputBuilder.buildIn
putModel(InputBuilder.java:59)
        at org.wso2.carbon.mediator.datamapper.engine.core.mapper.MappingHandler
.doMap(MappingHandler.java:88)
        at org.wso2.carbon.mediator.datamapper.DataMapperMediator.transform(Data
MapperMediator.java:309)
        at org.wso2.carbon.mediator.datamapper.DataMapperMediator.mediate(DataMa
pperMediator.java:259)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractLis
tMediator.java:89)
        at org.apache.synapse.mediators.AbstractListMediator.mediate(AbstractLis
tMediator.java:59)
        at org.apache.synapse.mediators.base.SequenceMediator.mediate(SequenceMe
diator.java:158)

有人可以帮我解决我可能出错的地方。另外,请告诉我如何将来自端点的 json 响应输入到 Data Mapper 中介。

4

0 回答 0