0

我在 wso2 esb 中将 json 转换为 json 时遇到问题,实际上我在代理中使用了有效负载工厂,我用 rest 和 json 内容调用代理。这是我的集成流程,我调用代理,代理将请求(带有 json 内容)发送到 jms 消息存储,然后我定义了一个消息处理器来使用来自消息存储的消息并将它们发送到定义的端点(.net web api)。但问题是带有数字的字符串会自动转换为整数元素:“orderId”:10000(我希望它是字符串“orderId”:“10000”),但是当我将请求直接从代理发送到我的端点时(没有使用消息代理)它可以正常工作。你能帮我解决这个问题吗?

4

3 回答 3

1

有关更多详细信息,请参阅我的问题以及有关此问题的更多详细信息,并且看起来这是 wso2 esb 4.9.0 wso2 jira中的错误

于 2016-07-12T15:12:50.327 回答
0

对于您的问题,需要更改 JSON 消息格式化程序。请按照以下步骤操作。

  • 将工作目录更改为 [ESB Home]/repository/conf/axis2/axis2.xml

  • 那么您需要使用 org.apache.axis2.json.JSONMessageFormatter 更改 JSON 消息格式化程序而不是 JsonStreamFormatter。

  <!--messageFormatter contentType="application/json"                                class="org.apache.synapse.commons.json.JsonStreamFormatter"/-->
    <messageFormatter contentType="application/json"
                              class="org.apache.axis2.json.JSONStreamFormatter"/>
于 2016-07-11T05:03:28.077 回答
0

您可以在 axis2.xml 中使用以下构建器和格式化程序

org.apache.synapse.commons.json.JsonStreamBuilder
org.apache.synapse.commons.json.JsonStreamFormatter

删除“application/json”的现有构建器和格式化程序并添加以下内容。

在格式化程序部分下添加

<messageFormatter contentType="application/json"
                          class="org.apache.synapse.commons.json.JsonStreamFormatter"/>

在 Builders 部分下添加

 <messageBuilder contentType="application/json"
                            class="org.apache.synapse.commons.json.JsonStreamBuilder"/>
于 2016-07-11T07:16:24.453 回答