HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据

HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据

这是我定义的map数据。

let tokenJson = new Map<string,string>();
let token = BDUserManager.share().token;
    if (token) {
      tokenJson["uid"] = token.uid ?? "";
      tokenJson["openid"] = token.openid ?? "";
      tokenJson["loginid"] = token.loginid ?? "";
    }

通过以上方式添加数据后,tokenJson的size一直为0.但是呢通过在JSON.stringify(tokenJson) 转换后,能正常转化成json字符串

然后我接着试第二种方式:

tokenJson.set("uid", token.uid ?? "");
tokenJson.set("openid", token.openid ?? "");
tokenJson.set("loginid", token.loginid ?? "");

这样打印出来的tokenJson的size为3。然后通过JSON.stringify(tokenJson) 后不成功,结果为{}.

另外还有个问题:

new Map<string,Object>();  new Map<string,object>();

这两个定义中的object有啥区别啊。

我想请教一下:你们是如何封装请求参数的呢

8 回复

ArkTS中的Map类型其实就是ES6里面的Map。

而Map 是 ES6 中引入的一种新的数据结构,Map ≠ Object。

因此tokenJson["uid"] = token.uid ?? ""tokenJson.set("uid", token.uid ?? "");

当你通过tokenJson["uid"] = token.uid ?? "";时,是给tokenJson这个实例对象上附加了一个属性。并没有设置到tokenJsonentries属性中,tokenJson.size只统计tokenJson.entries中的key的数量。

更多关于HarmonyOS 鸿蒙Next 发送数据给后台应该如何封装数据,或者如何封装Map数据的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


还有一点想再请教下。那个http传参字段extraData应该怎么传入呢。我肯定是在工具类中封装好参数再传入,昨天捣鼓了半天,通过map.set方式不知道怎么传。望大佬指点一二,

我刚接触,但这个if()的条件是什么?是否会执行下面的语句啊?

第二个问题,那个"Object"和"object"不一样,前面那个需要自定义,后面那个是系统内置,

这是只是个例子,就是有添加数据,

你的if都没成立,怎么执行?可以抛弃if试试,

在HarmonyOS鸿蒙Next中,发送数据给后台时,可以使用ohos.net.http模块中的HttpRequest类来封装和发送数据。对于Map数据的封装,可以通过RequestData对象进行处理。

  1. 封装普通数据: 使用RequestData对象,可以通过add方法添加键值对数据。例如:

    let requestData = new http.RequestData();
    requestData.add("key1", "value1");
    requestData.add("key2", "value2");
  2. 封装Map数据: 如果数据是Map类型,可以通过遍历Map并将键值对添加到RequestData中。例如:

    let mapData = new Map();
    mapData.set("key1", "value1");
    mapData.set("key2", "value2");
    
    let requestData = new http.RequestData();
    mapData.forEach((value, key) => {
        requestData.add(key, value);
    });
  3. 发送数据: 使用HttpRequest对象发送数据时,可以将RequestData对象作为请求体传递。例如:

    let httpRequest = http.createHttp();
    let requestOptions = {
        method: http.RequestMethod.POST,
        extraData: requestData
    };
    
    httpRequest.request("https://example.com/api", requestOptions, (err, data) => {
        if (err) {
            console.error("Request failed: " + err.message);
        } else {
            console.log("Response data: " + data.result);
        }
    });

通过以上方式,可以在HarmonyOS鸿蒙Next中封装并发送数据给后台。

在HarmonyOS(鸿蒙Next)中,发送数据给后台时,通常使用HttpURLConnectionOkHttp等网络库。若需封装Map数据,可将其转换为JSON格式。以下是一个示例:

import ohos.utils.zson.ZSON;
import java.util.HashMap;
import java.util.Map;

public class DataSender {
    public static String sendData(Map<String, Object> data) {
        String jsonData = ZSON.toJsonString(data);
        // 使用HttpURLConnection或OkHttp发送jsonData
        return jsonData;
    }

    public static void main(String[] args) {
        Map<String, Object> map = new HashMap<>();
        map.put("key1", "value1");
        map.put("key2", "value2");
        String json = sendData(map);
        System.out.println(json);
    }
}

此代码将Map转换为JSON字符串,便于网络传输。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!