HarmonyOS 关于Map语法问题

const params:Map<string,CommonType> = new Map(); 
    params["lnt"] = "118.177704"; 
    params["devImei"] = "xxxx"; 
    params["deviceToken"] = "xxxxx"; 
    params["lat"] = "24.485945"; 
    params["region"] = "福建省-厦门市"; 
    params["pwd"] = "51459c23ca91ebce271449dd8b5c26751c99039c2ae4c628067898ca0e104039"; 
    params["devMol"] = "iPhone 6s Plus"; 
    params["acct"] = "xxxx"; 
   console.log("params______",JSON.stringify(params)); 
 
    const sendParams:Map<string,CommonType> = new Map(); 
    sendParams.set("lnt","118.177704"); 
    sendParams.set("devImei","xxxx"); 
    sendParams.set("deviceToken","xxxx"); 
    sendParams.set("lat","24.485945"); 
    sendParams.set("region","福建省-厦门市"); 
    sendParams.set("pwd","51459c23ca91ebce271449dd8b5c26751c99039c2ae4c628067898ca0e104039"); 
    sendParams.set("devMol","iPhone 6s Plus"); 
    sendParams.set("acct","xxxx"); 
    console.log("sendParams______",JSON.stringify(sendParams));

map的这两种写法有什么区别?第一个打印出来是:

{"lnt":"118.177704","devImei":"xxxxx","deviceToken":"xxxx","lat":"24.485945","region":"福建省-厦门市","pwd":"51459c23ca91ebce271449dd8b5c26751c99039c2ae4c628067898ca0e104039","devMol":"iPhone 6s Plus","acct":"xxxx"},

第二个打印出来是:{}。

HarmonyOS
4天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

​1、当Map<string,CommonType>定义的map使用 params[“lnt”] = “118.177704”; 方式赋值,这种方式本质上更像是 :Record<string,CommonType>,一个标准的JSON对象,而不再是map集合,也不可以转换成HashMap容器类并且使用map容器类的方法。

2、当HashMap<string,CommonType>定义的map(推荐定义为HashMap)使用 sendParams.set(“lnt”,“118.177704”); 方式赋值,这个就是标准的map容器类,也可以使用HashMap集合的迭代器遍历。

3、如1中介绍,该定义方式类似于Record,一个JSON对象的格式,所以可以转换为JSON字符串;2中的方式为map集合无法抓换成JSON字符串。

4、遍历map集合,并且生成一个Record对象。(对应JAVA中JSONObject,可转换成类似于JSON串或者JSON对象的操作)​

mapIterator(map:HashMap<string, string|number>){ 
  let record:Record<string,string|number> = {}; 
  try { 
    let iter = map.keys(); 
    let temp: IteratorResult<string> = iter.next(); 
    while(!temp.done) { 
      let key = temp.value; 
      let value = map.get(key); 
      if(value){//简单判空。可不要 
        record[key] = value 
      } 
      temp = iter.next(); 
    } 
  }catch (err){ 
    console.log(err); 
  } 
  return record; 
}

5、当一个HashMap集合必须使用JSON字符串传递出去时,推荐使用4方法转换成Record对象,然后转换成JSON字符串传递;如果不是必要还是使用HashMap对象在方法内传递保证不会丢失数据。

分享
微博
QQ
微信
回复
4天前
相关问题
HarmonyOS关于TS转ArkTS的语法问题
279浏览 • 1回复 待解决
HarmonyOS 开发语法问题
269浏览 • 1回复 待解决
HarmonyOS关于navigation问题
329浏览 • 1回复 待解决
openHarmony 注册服务中的语法问题
6966浏览 • 1回复 待解决
HarmonyOS 关于ColorFilter的问题
182浏览 • 1回复 待解决
HarmonyOS 关于taskpool的问题
49浏览 • 1回复 待解决
ArkTS语法咨询的问题有懂得吗?
2524浏览 • 1回复 待解决
HarmonyOS 使用Proxy语法报错
341浏览 • 1回复 待解决
HarmonyOS 关于onKeyEvent不生效问题
138浏览 • 1回复 待解决
HarmonyOS 关于@Watch监听状态问题
268浏览 • 1回复 待解决
HarmonyOS 关于Navigation组件的问题
269浏览 • 1回复 待解决
HarmonyOS 关于Web调试的问题
33浏览 • 1回复 待解决
HarmonyOS关于混淆强度相关问题
334浏览 • 1回复 待解决
HarmonyOS语法错误有哪些?
174浏览 • 1回复 待解决
HarmonyOS 关于Iconfont如何使用问题
110浏览 • 1回复 待解决
HarmonyOS 关于import包引入问题
150浏览 • 1回复 待解决
HarmonyOS关于API使用的问题
242浏览 • 1回复 待解决
关于DevEco Studio harmonyos SDK问题
14717浏览 • 5回复 待解决
HarmonyOS 关于使用@BuilderParam的问题
172浏览 • 1回复 待解决
HarmonyOS关于多线程的问题
295浏览 • 1回复 待解决
HarmonyOS JSON怎么转Map
56浏览 • 1回复 待解决
HarmonyOS 关于代理提醒数量的问题
244浏览 • 1回复 待解决