HarmonyOS 鸿蒙Next 如何在C层获取一个hashmap或者自定义对象数据

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 如何在C层获取一个hashmap或者自定义对象数据 如何在C层获取一个hashmap或者自定义对象数据

2 回复
static napi_value TransObject(napi_env env, napi_callback_info info) {
    napi_status status;
    size_t argc = 1;
    napi_value js_cb;

    status = napi_get_cb_info(env, info, &argc, &js_cb, nullptr, nullptr);
    assert(status == napi_ok);

    napi_value onCallBack1, str_arg;
    status = napi_get_named_property(env, js_cb, "onCallBack1", &onCallBack1);
    assert(status == napi_ok);

    status = napi_create_string_utf8(env, "mangguo", strlen("mangguo"), &str_arg);
    assert(status == napi_ok);

    size_t cb1argc = 1;
    status = napi_call_function(env, js_cb, onCallBack1, cb1argc, &str_arg, nullptr);

    size_t cb2argc = 1;
    napi_value onCallBack2, int_arg;
    status = napi_get_named_property(env, js_cb, "onCallBack2", &onCallBack2);
    status = napi_create_int32(env, 2, &int_arg);
    assert(status == napi_ok);

    status = napi_call_function(env, js_cb, onCallBack2, cb2argc, &int_arg, nullptr);
    assert(status == napi_ok);

    napi_value oncallback3, arg_object;
    status = napi_get_named_property(env, js_cb, "onCallBack3", &oncallback3);
    assert(status == napi_ok);

    status = napi_create_object(env, &arg_object);
    assert(status == napi_ok);

    napi_value testNum, testString;
    status = napi_create_int32(env, 123, &testNum);
    assert(status == napi_ok);

    status = napi_set_named_property(env, arg_object, "testNum", testNum);
    assert(status == napi_ok);

    status = napi_create_string_utf8(env, "mangguo", strlen("mangguo"), &testString);
    assert(status == napi_ok);

    status = napi_set_named_property(env, arg_object, "testString", testString);
    assert(status == napi_ok);

    status = napi_call_function(env, js_cb, oncallback3, cb2argc, &arg_object, nullptr);
    assert(status == napi_ok);

    return nullptr;
}

导入:import testNapi from ‘libentry.so’;
使用:testNapi.transobject(tscb);

更多关于HarmonyOS 鸿蒙Next 如何在C层获取一个hashmap或者自定义对象数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,如果你在C层(即原生C或C++代码层)需要获取一个HashMap或者自定义对象数据,这通常涉及到跨语言的数据交互,因为鸿蒙系统的应用开发主要基于Java或JS(ArkUI/eTS)等高级语言,而底层系统服务或驱动开发则可能使用C/C++。

为了在C层获取HashMap或自定义对象数据,你需要考虑以下几个步骤:

  1. 数据序列化:在Java层,将HashMap或自定义对象序列化为一种C层可以解析的格式,如JSON、二进制流或自定义协议。

  2. 数据传递:通过JNI(Java Native Interface)或其他跨语言调用机制,将序列化后的数据传递给C层。

  3. 数据解析:在C层,解析接收到的数据,重构为C/C++中的数据结构,如结构体或链表等。

需要注意的是,直接操作HashMap等高级数据结构在C层是不可行的,因为C语言本身不支持这样的数据结构。你必须自己实现相应的数据结构或在C层使用与Java序列化数据兼容的解析逻辑。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部