将JNI-> jobject(基本上是Java文件中的map和/或map映射)转换为std :: map(c)

前端之家收集整理的这篇文章主要介绍了将JNI-> jobject(基本上是Java文件中的map和/或map映射)转换为std :: map(c) 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在Java文件中有一个本地方法

class JNITest{
    public native void test(String param1,Map<String,Number> param2,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,float> >& param3) { }

问:-我需要将Jobject转换回std :: map(cpp)才能将其传递给cpp本机方法,有人可以建议使用标准方法进行相同操作吗?
提前致谢.

最佳答案
我们已经完成了C / Java集成的大量工作.跨边界传递复杂的数据结构的问题是,您必须整理方法调用,这可能是非常复杂且容易出错的工作.我发现做这样的事情要容易得多:

>在Java方面,使用gson或jackson将地图序列化为JSON
>跨边界传递JSON字符串
>在C端将JSON反序列化为std :: map

我对C端不太熟悉,但是我看到类似的问题正在解决here

原文链接:https://www.f2er.com/java/532813.html

猜你在找的Java相关文章