Mule-4:DataWeave2.0中以Map对象作为参数的静态方法调用

Mule-4:DataWeave2.0中以Map对象作为参数的静态方法调用,mule,pom.xml,dependency-management,dataweave,mulesoft,Mule,Pom.xml,Dependency Management,Dataweave,Mulesoft,我正在进行Mule 3.9到4.1.4的迁移工作,我在Mule 3.9中global-config.xml中的Groovy脚本定义的全局函数中调用了java逻辑,试图用以下方法在Mule 4中迁移它 这里有一个用例,java静态方法将Map作为参数,在DataWeave2.0中,我没有看到Dataweave调用java方法时使用Map对象的任何示例。既然尝试了下面的选项 选项1:现有代码 class JsonUtil { public static List<Map<Stri

我正在进行Mule 3.9到4.1.4的迁移工作,我在Mule 3.9中global-config.xml中的Groovy脚本定义的全局函数中调用了java逻辑,试图用以下方法在Mule 4中迁移它

这里有一个用例,java静态方法将Map作为参数,在DataWeave2.0中,我没有看到Dataweave调用java方法时使用Map对象的任何示例。既然尝试了下面的选项

选项1:现有代码

class JsonUtil {
    public static List<Map<String, String>> getTableAndColumns(Map<String, Object> inputJsonMap) {
        List<Map<String, String>> list = null;
        //Lot of big logic that to get list out of input Map object
        return list;
    }
}
class JsonUtil {
    public static List<Map<String, String>> getTableAndColumns(String inputJsonStr) {
        //Using my own utility class to convert JSON string to Map
        Map<String, Object> inputJsonMap = MyUtil.toMap(inputJsonStr, Map.class)
        List<Map<String, String>> list = null;
        //Lot of big logic that to get list out of input Map object
        return list;
    }
}

对于第一部分,可以通过强制对象将映射传递给该方法。根据你的课程,这对我很有用:

%dw 2.0

import java!com::mycompany::JsonUtil

var mymap = {key:"val"}
output application/json
---
{
    result: JsonUtil::getTableAndColumns(mymap as Object)
}
对于第2部分:如果选项1有效,我猜不需要。但是,您需要将依赖项专门添加到您的应用程序pom中,而不依赖于可传递的依赖项。无论如何,这是最佳实践,因为您不能期望APIKit始终使用gson:

<dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
...
</dependencies>

com.google.code.gson
格森
2.8.5
...

对于第一部分,可以通过强制对象将映射传递给该方法。根据你的课程,这对我很有用:

%dw 2.0

import java!com::mycompany::JsonUtil

var mymap = {key:"val"}
output application/json
---
{
    result: JsonUtil::getTableAndColumns(mymap as Object)
}
对于第2部分:如果选项1有效,我猜不需要。但是,您需要将依赖项专门添加到您的应用程序pom中,而不依赖于可传递的依赖项。无论如何,这是最佳实践,因为您不能期望APIKit始终使用gson:

<dependencies>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
...
</dependencies>

com.google.code.gson
格森
2.8.5
...