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

Angular中如何读取API返回JSON里的嵌套jsonData字段?

Angular中解析嵌套JSON字段的实现修正

你的实现思路是正确的,但存在两处细节问题需要修正,避免运行时报错:

1. 修正Observable转Promise的冗余写法

你当前代码中await lastValueFrom(await this.service.getAllUsers())存在冗余,因为this.service.getAllUsers()返回的是Observable类型,lastValueFrom直接接收Observable作为参数即可,不需要提前await。修正后的代码:

async getAllUsers() {
  this.allUsers = [];
  // 去掉多余的await,直接传入Observable给lastValueFrom
  this.allUsers = await lastValueFrom(this.service.getAllUsers());
  this.allUsers.forEach((node) => {
    if (node.jsonData) {
      node.jsonData = JSON.parse(node.jsonData);
    }
  });
}

2. 处理jsonData为null的边界情况

后端返回的第一个数据中jsonData为null,直接执行JSON.parse(null)虽然不会抛出错误,但后续在HTML中访问node.jsonData.Address时会触发空指针异常。因此需要先判断jsonData是否有值,再执行解析:

this.allUsers.forEach((node) => {
  // 仅当jsonData不为null/空字符串时才解析
  if (node.jsonData && typeof node.jsonData === 'string') {
    node.jsonData = JSON.parse(node.jsonData);
  }
});

3. HTML模板中添加安全导航操作符

为了彻底避免空指针错误,在HTML模板访问嵌套字段时,使用Angular的安全导航操作符?.:

{{ node.jsonData?.Address }}
{{ node.jsonData?.City }}
{{ node.jsonData?.PostalCode }}
{{ node.jsonData?.Country }}

修正以上三点后,你的实现就能稳定运行,正确解析并展示嵌套的JSON字段。

内容的提问来源于stack exchange,提问作者Danny Web

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:22:35