我从后端Web服务获得以下JSON数据.

[
    {
        "id": 10,
        "name": "My Name1",
        "age": 25,
        "jsonData": null
    },
    {
        "id": 15,
        "name": "My Name2",
        "age": 25,
        "jsonData": "{\"Address\":\"My Address 123\",\"City\":\"My City\",\"PostalCode\":\"ABC-123-DEF\",\"Country\":\"My Country\"}"
    }
]

我可以用ngFor在组件html上循环数组,但如何读取"地址"、"城市"等"jsonData"字段呢?

推荐答案

您需要将jsonDatastring转换为JSON.parse(<JSON string>)的对象类型.

请注意,这可以在返回Observable/Response期间通过map(RxJS)操作符执行.

请注意,你的jsonData可能是null,所以你必须在转换之前判断jsonData是真实的.

import { map } from 'rxjs';

this.http.get<any[]>('<API URL>').pipe(
  map((resp: any[]) =>
    resp.map((x: any) => ({
      ...x,
      jsonData: !!x.jsonData ? JSON.parse(x.jsonData) : null,
    }))
  )
);

Demo @ StackBlitz

Typescript相关问答推荐

当我点击外部按钮时,如何打开Html Select 选项菜单?

有没有办法解决这个问题,类型和IntrinsicAttributes类型没有相同的属性?

编剧错误:正在等待Expect(Locator).toBeVisible()

了解类型规则中的关键字

为什么我的一个合成函数不能推断类型?

如何通过TypeScrip中的函数防止映射类型中未能通过复杂推理的any值

正交摄影机正在将渲染的场景切成两半

TypeScrip:强制使用动态密钥

如何在省略一个参数的情况下从函数类型中提取参数类型?

React router 6(数据路由)使用数据重定向

如何正确调用创建的类型?

从route.参数获取值.订阅提供";无法读取未定义";的属性

如何创建由空格连接的多个字符串的类型

自动通用回调

可赋值给类型的类型,从不赋值

使用&reaction测试库&如何使用提供程序包装我的所有测试组件

为什么`map()`返回类型不能维护与输入相同数量的值?

如何通过nx找到所有受影响的项目?

是否有解释为什么默认情况下在泛型类型上访问的属性不是索引访问

使用泛型时记录无法建立索引