我只是想求data中earningsDtos这个数组每一项的money之和,感觉ts几秒钟解决的问题,在uts中困扰了几天,求指点一下,初学者不易
[java.lang.ClassCastException] {cause: null, message: "io.dcloud.uts.UTSArray cannot be cast to io.dcloud.uts.UTSJSONObject"}
try {
const res = await getDividendHouseSearch_Api({
houseId: 0
})
if (res['code'] == 200) {
const resData = (res['data'] as UTSJSONObject);
const _earningsDtos = resData['earningsDtos'] as Array<UTSJSONObject>;
// for (let i = 0; i < _earningsDtos.length; i ) {
// _allMoney = _earningsDtos[0].money as number;
// }
console.log("金额总计", _earningsDtos[0]['money']) // 只要[]访问,直接报错,为什么???
}
} catch (err : any) {
console.error(err);
}
2 个回复
迈克马 - 老年狙击手
如果是这一句的话“const resData = (res['data'] as UTSJSONObject); ”,那么提示的很清楚了啊,res['data']引用的是个数组,而不是一个UTSJSON对象。UTS中,数组不是JSON!
迈克马 - 老年狙击手
如果是:“const _earningsDtos = resData['earningsDtos'] as Array<UTSJSONObject>;”这一句的话,也是一个道理。
resData['earningsDtos']里的每个元素,不是UTSJSONObject,而又是一个数组!
2***@qq.com (作者)
怎么给二维数组设置类型,我发现earningsDtos这个是个二维数组,直接earningsDtos[0]会报错,是类型问题吧
2025-01-16 16:43
2***@qq.com (作者)
console.log('____arrs:', houseData.value.earningsDtos[0] ) //earningsDtos是二维数组,这里下标0是数组,但还是报错:error: No get method providing array access, 二维数组怎么用下标访问子元素呢?
2025-01-16 16:45
迈克马
你打印下type类型,再查查UTS规范吧。我这里光靠眼看,只能说到这程度了。。。还有就是UTSArray是不是有个toArray转普通数组的方法,你都试一试。按说就是个语法问题。
2025-01-17 10:39