在下面的示例中,当我在 Transform 中创建变量时,我有时会使用 application/java 有时使用 application/json 。看来使用这个变量的目标系统并不关心 输出是 JSON 还是 Java。只有在少数情况下才重要。 我的直觉是 Mule 平台会自动将其转换为正确的类型,即使你设置错误。
我的问题是: 在什么情况下应该使用输出 application/java 或输出 application/json?有可遵循的一般规则吗?
任何建议或想法都非常欢迎!
%dw 2.0
output application/java
---
{
companyCode: attributes.queryParams.companyCode,
((updSince: attributes.queryParams.updSince)) if(!isEmpty(attributes.queryParams.updSince)),
((updBefore: attributes.queryParams.updBefore)) if(!isEmpty(attributes.queryParams.updBefore)),
((updDate: attributes.queryParams.updDate)) if(!isEmpty(attributes.queryParams.updDate)),
limit: attributes.queryParams.limit as Number default 200,
page: attributes.queryParams.page as Number default 1
}
这个问题没有提供有关您如何使用该输出的详细信息,因此我只能提供一般建议。
一般来说,如果您使用转换的输出在 Mule 应用程序内执行进一步的转换或处理,最好输出到 Java (
application/java
)。这是因为 Java 是 Mule 中的“本地”表示。它不需要像任何其他格式一样进行解析/格式化处理。在格式之间进行转换可能会耗费大量资源(例如 CPU 和内存),因此只有在真正需要时才应该进行转换。否则,当应用程序处于负载状态时,您可能会发现问题。
另一方面,如果您在应用程序外部发送该值(例如使用 HTTP 连接器),并且它应该以 JSON 形式接收,那么可以输出为 JSON、XML 或接收方期望的任何格式。请注意,连接器可能能够在输入格式和预期格式之间自动转换值,但如果您想确保可以显式进行转换。