HarmonyOS 如何把对象转成HasMap

export class CommentItem{ 
 
  fCommentObjId : string = '' 
  fCreateUserid : string = '' 
  fCommentObjOwnerId : string = '' 
  fCommentObjType :  string = '' 
  fContent : string = '' 
  fCreateUserNickname : string = '' 
  fCreateUserPicture : string  = '' 
  fPictureContent : string  = '' 
  source? : string  = '0' 
} 
 
let params = new HashMap<string,string>()

如何把CommentItem对象转成 HashMap 对象。

HarmonyOS
2024-08-28 09:28:42
浏览
收藏 0
回答 2
待解决
回答 2
按赞同
/
按时间
鱼弦CTO
1

在 HarmonyOS 中,可以将对象属性转换成 ​​HashMap​​​ 对象。首先,你需要创建一个 ​​CommentItem​​​ 类的实例,然后通过遍历其属性,将每个属性和值放入到 ​​HashMap​​ 中。

### CommentItem 类定义

export class CommentItem {
  fCommentObjId: string = '';
  fCreateUserid: string = '';
  fCommentObjOwnerId: string = '';
  fCommentObjType: string = '';
  fContent: string = '';
  fCreateUserNickname: string = '';
  fCreateUserPicture: string = '';
  fPictureContent: string = '';
  source?: string = '0';
}

### 将对象转换为 HashMap

为了实现这一点,你可以手动将每个属性添加到 ​​HashMap​​,也可以使用反射或元编程来遍历属性并动态地添加它们。以下示例展示了如何手动及自动地进行这种转换:

#### 示例代码

import { CommentItem } from './CommentItem';
import * as HashMap from 'hashmap';

// 创建一个 CommentItem 实例
let commentItem = new CommentItem();
commentItem.fCommentObjId = '12345';
commentItem.fCreateUserid = 'user1';
commentItem.fCommentObjOwnerId = 'owner1';
commentItem.fCommentObjType = 'typeA';
commentItem.fContent = 'This is a comment';
commentItem.fCreateUserNickname = 'nickname';
commentItem.fCreateUserPicture = 'picture_url';
commentItem.fPictureContent = 'picture_content';
commentItem.source = 'source_value';

// 创建一个 HashMap 实例
let params = new HashMap<string, string>();

// 手动将属性添加到 HashMap
params.set('fCommentObjId', commentItem.fCommentObjId);
params.set('fCreateUserid', commentItem.fCreateUserid);
params.set('fCommentObjOwnerId', commentItem.fCommentObjOwnerId);
params.set('fCommentObjType', commentItem.fCommentObjType);
params.set('fContent', commentItem.fContent);
params.set('fCreateUserNickname', commentItem.fCreateUserNickname);
params.set('fCreateUserPicture', commentItem.fCreateUserPicture);
params.set('fPictureContent', commentItem.fPictureContent);
params.set('source', commentItem.source || '');

// 输出 HashMap 内容
params.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

### 自动遍历属性

你也可以通过动态遍历对象的属性,将其值添加到 ​​HashMap​​。这更加通用,适用于属性较多的类。

#### 示例代码

function objectToHashMap(obj: any): HashMap<string, string> {
  let hashMap = new HashMap<string, string>();
  
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      let value = obj[key];
      // 如果值是 undefined 或 null,则设为空字符串
      if (value === undefined || value === null) {
        value = '';
      }
      hashMap.set(key, value);
    }
  }
  
  return hashMap;
}

// 创建一个 CommentItem 实例
let commentItem = new CommentItem();
commentItem.fCommentObjId = '12345';
commentItem.fCreateUserid = 'user1';
commentItem.fCommentObjOwnerId = 'owner1';
commentItem.fCommentObjType = 'typeA';
commentItem.fContent = 'This is a comment';
commentItem.fCreateUserNickname = 'nickname';
commentItem.fCreateUserPicture = 'picture_url';
commentItem.fPictureContent = 'picture_content';
commentItem.source = 'source_value';

// 将 CommentItem 对象转换为 HashMap
let params = objectToHashMap(commentItem);

// 输出 HashMap 内容
params.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

### 小结

  • 手动方法:适用于属性数量有限且结构固定的情况。
  • 自动遍历方法:更为通用,适用于属性较多或结构可能变化的对象。

根据上述示例,你可以选择最合适的方法来将 ​​CommentItem​​ 对象转换为 ​​HashMap​​,以便在应用中灵活处理数据。

分享
微博
QQ
微信
回复
2024-08-28 09:58:42
zxjiu

示例如下:

export class CommentItem{ 
 
  fCommentObjId : string = '' 
 
  constructor(fCommentObjId:string) { 
    this.fCommentObjId = fCommentObjId 
  } 
} 
let map = new HashMap<string, object>(); 
let aa = new CommentItem('1111') 
let jsonObj:string = JSON.stringify(aa); 
let jsonObj2:Object = JSON.parse(jsonObj); 
let commObj = (jsonObj2 as Record <string, Object>); 
let valueStr = Object.values(commObj); 
 
let keyStr = Object.keys(commObj); 
 
for (let index = 0; index < valueStr.length; index++) { 
  if(valueStr[index]!=undefined && keyStr[index]!=undefined){ 
    map.set(keyStr[index],valueStr[index]) 
  } 
} 
console.log('fCommentObjId==='+map.get('fCommentObjId'));
分享
微博
QQ
微信
回复
2024-08-28 20:28:15
相关问题
HarmonyOS HasMap 如何转成对象
228浏览 • 1回复 待解决
如何将Resource资源对象转成string类型
3135浏览 • 1回复 待解决
如何将js传的map转成c++的对象
748浏览 • 1回复 待解决
HarmonyOS JSON.stringify一个hasmap的问题
141浏览 • 1回复 待解决
HarmonyOS json数据如何转成map
982浏览 • 1回复 待解决
HarmonyOS pixelMap转成ArrayBuffer
51浏览 • 1回复 待解决
如何将ArrayBuffer转成string?
606浏览 • 1回复 待解决
如何将ArrayBuffer转成string
2544浏览 • 1回复 待解决
HarmonyOS 汉字转成特定格式
316浏览 • 1回复 待解决
Uint8Array如何转成ArrayBuffer
1592浏览 • 1回复 待解决
ResourceStr 类型如何转成字符串?
261浏览 • 1回复 待解决
HarmonyOS如何npm库适用到ohpm里
444浏览 • 1回复 待解决