温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to convert java object to JSON after java:invoke in mule 4
java mule mule-esb mulesoft

其他 - 如何在Mule 4中的java:invoke之后将Java对象转换为JSON

发布于 2020-04-17 14:25:50

我正在使用m子4。正在调用Java方法,它返回一个Java对象作为有效负载。如果尝试打印有效载荷,我会得到类似的信息com.myproject.services.DataInjectorManager$MyClass@7606ba6e如何将其转换为JSON?我的m子流是:

<flow name="processFile">
        <http:listener config-ref="HttpListenerConfig" path="/processFile" allowedMethods="GET">
            <http:response statusCode="200"/>
        </http:listener>
        <java:invoke doc:name="Invoke" doc:id="d56b8f5a-4dfa-4737-b6f3-b740585ab58d" instance="dataInjectorManager"
                     class="com.myproject.services.DataInjectorManager"
                     method="processFile(java.lang.String)">
            <java:args>#[{
                'arg0': attributes.queryParams.file
                }]
            </java:args>
        </java:invoke>
        <logger message="#[payload]" level="INFO" />
    </flow>

先感谢您

查看更多

提问者
Ramón Parejo Cuéllar
被浏览
38
afelisatti 2020-02-04 20:14

您今天看到的日志之所以发生,是因为您toString的课程中没有实现,因此使用了默认设置Object#toString如果只是记录日志,则可以尝试添加。如果您确实要记录JSON,则可以执行以下操作:

<logger message="#[output application/json --- payload]" level="INFO" />

如果您还想返回该JSON作为responseo,则需要在日志记录和响应之前使用转换组件将有效负载转换为JSON:

<ee:transform >
    <ee:message >
        <ee:set-payload ><![CDATA[%dw 2.0
            output application/json
            ---
            payload]]>
        </ee:set-payload>
    </ee:message>
</ee:transform>

请注意,您可能必须构建更复杂的转换,具体取决于Java对象的确切外观以及JSON中的要求。