如何在 mule 4 中的 java:invoke 之后将 java 对象转换为 JSON
How to convert java object to JSON after java:invoke in mule 4
我正在使用 mule 4。我正在调用一个 java 方法,它 returns 一个 java 对象作为有效载荷。如果尝试打印有效载荷,我会得到类似 com.myproject.services.DataInjectorManager$MyClass@7606ba6e
的结果。我如何将其转换为 JSON?
我的 mule flow 是:
<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>
提前致谢
您今天看到的日志是因为您的 class 中没有 toString
实现,所以使用默认的 Object#toString
。如果它只是关于日志记录,您可以尝试添加它。如果你真的想记录一个 JSON 那么你可以这样做:
<logger message="#[output application/json --- payload]" level="INFO" />
如果您还想 return 将 JSON 作为响应,那么您需要在记录和响应之前使用转换组件将您的负载转换为 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 中想要什么。
我正在使用 mule 4。我正在调用一个 java 方法,它 returns 一个 java 对象作为有效载荷。如果尝试打印有效载荷,我会得到类似 com.myproject.services.DataInjectorManager$MyClass@7606ba6e
的结果。我如何将其转换为 JSON?
我的 mule flow 是:
<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>
提前致谢
您今天看到的日志是因为您的 class 中没有 toString
实现,所以使用默认的 Object#toString
。如果它只是关于日志记录,您可以尝试添加它。如果你真的想记录一个 JSON 那么你可以这样做:
<logger message="#[output application/json --- payload]" level="INFO" />
如果您还想 return 将 JSON 作为响应,那么您需要在记录和响应之前使用转换组件将您的负载转换为 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 中想要什么。