HarmonyOS鸿蒙Next中map对象无法取值,报TypeError: is not callable
HarmonyOS鸿蒙Next中map对象无法取值,报TypeError: is not callable
map对象取值
export class CgiUrlsBean {
/**
* 上次更新时间
*/
newestTime ?: string
/**
* 域名集合
*/
global ?: GlobalBean
/**
* 业务接口
*/
urls ?: HashMap<string, UrlsBean>
}
使用时:
let netCgiUrlsBean: CgiUrlsBean = JSON.parse(body)
netCgiUrlsBean.urls?.get('FUND_HMTJLIST')
Map取值时报TypeError: is not callable
,应该如何处理
更多关于HarmonyOS鸿蒙Next中map对象无法取值,报TypeError: is not callable的实战教程也可以访问 https://www.itying.com/category-93-b0.html
可以使用class-transformer将Json字符串反序列化得到的对象转换成ArkTS中类的实例对象
1、引入三方库
ohpm install class-transformer
ohpm install reflect-metadata
2、代码
import { Type, plainToClass } from 'class-transformer'
import "reflect-metadata"
import { CgiUrlsBean } from '../utils/CgiUrlsBean';
import { UrlsBean } from '../utils/UrlsBean';
import { HashMap } from '@kit.ArkTS';
let urlsBeanJson='{"newestTime":"newestTime1","global":{"path":"path1","host":"host1"},"urls":{"key1":{"encryption":"encryption1","isNeedSign":"isNeedSign1"}}}'
let plain: Object = JSON.parse(urlsBeanJson) as CgiUrlsBean;
let album = plainToClass(CgiUrlsBean, plain);
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
build() {
Row() {
Column() {
Button('Test')
.onClick(() => {
let urlsMap = album.urls as HashMap<string, UrlsBean>;
let urlsBean: Map<string, UrlsBean> = new Map(Object.entries(urlsMap))
let value: UrlsBean = urlsBean.get("key1") as UrlsBean
console.log("dddd===value=" + value );
console.log("dddd===encryption=" + value.encryption);
})
}
.height('100%')
}
}
}
更多关于HarmonyOS鸿蒙Next中map对象无法取值,报TypeError: is not callable的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
试试
netCgiUrlsBean.urls[‘FUND_HMTJLIST’]
在ArkTS中和javascript的map是一样的,支持两种方式保存数据
方案1、map.set() map.get()
方案2、map[‘a’]=1 ,let abc = map[‘a’]
你那边通过接口返回的数据进行接收时,相当于方案2,所以只能通过[属性名]进行获取。
在HarmonyOS鸿蒙Next中,如果在使用map
对象时遇到TypeError: is not callable
错误,通常是因为尝试将map
对象作为函数调用。map
对象在HarmonyOS中是一个集合类型,用于存储键值对,而不是一个可调用的函数。
正确的用法是通过get
方法来获取值,而不是直接调用map
对象。例如:
let myMap = new Map();
myMap.set('key1', 'value1');
let value = myMap.get('key1'); // 正确用法
如果尝试以下方式调用:
let value = myMap('key1'); // 错误用法
就会抛出TypeError: is not callable
错误,因为myMap
不是一个函数,不能直接调用。
确保在使用map
对象时,使用正确的方法来获取值。检查代码中是否有误将map
对象作为函数调用的地方,并修正为使用get
方法。
在HarmonyOS鸿蒙Next中,如果遇到map
对象无法取值并报TypeError: is not callable
错误,通常是因为map
对象被错误地当作函数调用。map
是一个集合类,应使用get
方法来获取值。例如:map.get(key)
。检查代码中是否有类似map(key)
的调用,并更正为map.get(key)
即可解决此问题。