我在Java文件中有一个本地方法:
class JNITest{
public native void test(String param1, Map<String, Number> param2, Map<String, Map<String, Double>> param3)
}
从Java生成头文件后,映射将通过头文件方法转换为jobject:
JNIEXPORT void JNICALL Java_com_jni_JNITest_test
(JNIEnv *env,
jobject self,
jstring param1,
jobject param2,
jobject param3) { }
我在cpp中有一个本地方法:
int cpp_native(
std::string param1,
std::map<std::string, float>& param2,
std::map<std::string, std::map<std::string, float> >& param3) { }
问:-我需要将Jobject转换回std :: map(cpp)才能将其传递给cpp本机方法,有人可以建议使用标准方法进行相同操作吗?
提前致谢.
最佳答案
我们已经完成了C / Java集成的大量工作.跨边界传递复杂的数据结构的问题是,您必须整理方法调用,这可能是非常复杂且容易出错的工作.我发现做这样的事情要容易得多:
>在Java方面,使用gson或jackson将地图序列化为JSON
>跨边界传递JSON字符串
>在C端将JSON反序列化为std :: map
我对C端不太熟悉,但是我看到类似的问题正在解决here