You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用API后返回对象属性访问undefined问题求助

问题分析与解决方案

1. 属性大小写不匹配导致undefined

API返回的对象属性是小写开头的:message、isSuccess、data,但你代码里用result.Message(首字母大写)访问,自然会返回undefined。正确的访问方式应该是result.message。

修改对应代码行:

console.log("2: ", result.message);  // 改用小写的message

2. ResultModel构造函数未正确映射属性

你实例化ResultModel时传入了返回的result对象,但构造函数没有把传入对象的小写属性映射到自身的大写属性上,导致实例化后属性值异常。需要修改ResultModel的构造函数,处理属性的大小写转换:

class ResultModel<T> {
  IsSuccess: boolean;
  Message: string;
  Data: T;

  constructor(obj: { isSuccess: boolean; message: string; data: T }) {
    this.IsSuccess = obj.isSuccess;
    this.Message = obj.message;
    this.Data = obj.data;
  }
}

修改后再执行var p = new ResultModel(result);,就能得到正确的实例属性值。

代码优化建议(可选)

使用async/await替代嵌套then,让代码更简洁易读:

try {
  const response = await fetch(i.login.url, {
    method: i.login.methodType,
    body: JSON.stringify(data),
    headers: {
      "Content-Type": "application/json",
    },
  });
  if (!response.ok) {
    const result = await response.json() as { isSuccess: boolean; message: string; data: boolean };
    console.log("1: ", result);
    console.log("2: ", result.message);
    const p = new ResultModel(result);
    console.log(p);
  }
} catch (error) {
  // 捕获并处理请求或解析错误
}

内容的提问来源于stack exchange,提问作者Radim Cieslar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 14:57:22