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

如何在Angular8及以上版本中为SpringBoot返回的嵌套JSON定义TypeScript模型类

Angular8 嵌套JSON响应对应模型类定义方案

Angular中针对接口响应定义类型模型,优先使用interface做静态类型校验即可,嵌套结构按层级拆分定义即可,你可以按照以下步骤实现:

1. 定义内层用户数据模型

新建user.model.ts文件,定义data数组中每个用户对象的结构:

export interface User {
  userid: string;
  password: string;
  role: string;
  sessionid: string;
  sessiontype: string;
  status: string | null;
}

按照要求所有字段均定义为string类型,其中status字段可能为null,所以额外增加了null类型做兼容。

2. 定义外层通用响应模型

新建api-response.model.ts文件,定义完整的响应包结构:

import { User } from './user.model';

export interface ApiResponse {
  message: string;
  status: string;
  data: User[];
}

3. 使用示例

在你的HTTP请求服务中,可以直接指定返回值类型为ApiResponse即可获得完整的类型提示:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { ApiResponse } from './models/api-response.model';

@Injectable({
  providedIn: 'root'
})
export class UserService {
  constructor(private http: HttpClient) {}

  getUsers(): Observable<ApiResponse> {
    return this.http.get<ApiResponse>('/你的实际接口地址');
  }
}

如果后续有其他接口也使用相同的外层响应结构,只需要把ApiResponse改成泛型即可适配不同的data类型:

// 泛型版本通用响应模型
export interface ApiResponse<T> {
  message: string;
  status: string;
  data: T;
}

// 使用时传入具体的data类型即可,比如用户列表接口:
Observable<ApiResponse<User[]>>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:18:01