Как преобразовать java объект в JSON после java: вызвать в муле 4 - PullRequest
0 голосов
/ 04 февраля 2020

Я работаю с mule 4. Я вызываю метод java, и он возвращает объект java в качестве полезной нагрузки. Если попытаться распечатать полезные данные, я получу что-то вроде com.myproject.services.DataInjectorManager$MyClass@7606ba6e. Как я могу преобразовать это в JSON? Мой поток мулов:

<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>

Заранее спасибо

1 Ответ

0 голосов
/ 04 февраля 2020

Журнал, который вы видите сегодня, происходит потому, что в вашем классе нет реализации toString, поэтому используется значение по умолчанию Object#toString. Вы можете попробовать добавить это, если речь идет только о регистрации. Если вы действительно хотите записать JSON, то вы можете сделать:

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

Если вы также хотите вернуть 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.

...