gpt4 book ai didi

json - 如何将具有嵌套数组的 JSON 对象映射到 typescript 模型中?

转载 作者:搜寻专家 更新时间:2023-10-30 21:33:29 25 4
gpt4 key购买 nike

假设我有一个返回以下 JSON 结构的 api:

{
"Response": {
"status": {
"code": "SUCCESS",
"message": "owner found",
"count": "1"
},
"owners": [
{
"ownerId": "12345",
"name": "Example Person",
"cars": [
{
"make": "Toyota"
"year": "2004"
"model": "Camry"
}
]
}
]
}
}

我想将这个 json 结构映射到这些 typescript 模型中:

export class ApiResponse{
constructor(
public status: Status,
public owners: Owner[]
) {}
}
export class Status {
constructor(
public code: string,
public message: string,
public count: number
) {}
}
export class Owner{
constructor(
public ownerId: number,
public name: string,
public cars: Car[]
) {}
}
export class Car{
constructor(
public make: string;
public year: string;
public model: string;
)
}

根据我对 Angular 7 的理解,您可以使用 rxjs 中的管道和映射来实现此目的:

this.http.get(url).pipe(
map((data: any[]) => data.map((item: any) => new ApiResponse(
new Status(
item.status.code,
item.status.message,
item.status.count),
...

使用它我可以映射一个 JSON 对象,但我不确定如何处理映射数组和嵌套数组。

我应该如何使用嵌套数组映射 JSON?

最佳答案

如果你的类不会实现任何新功能,你应该使用接口(interface)来强制强类型,否则只是样板。在开始时,您可以像这样派生出 4 个接口(interface)并从 Typescript 安全检查中受益:

export interface ApiResponse{
status: Status,
owners: Owner[]
}
export interface Status {
code: string,
message: string,
count: number
}
export interface Owner{
ownerId: number,
name: string,
cars: Car[]
}
export interface Car{
make: string;
year: string;
model: string;
}

调用该 API 的方法可以这样写:

getStatusAndOwners(url): Observable<ApiResponse> {
return this.http.get(url);
}

当您使用数据时(很可能在订阅 block 中),您将受益于“IntelliSense”和强类型。

祝你好运!

关于json - 如何将具有嵌套数组的 JSON 对象映射到 typescript 模型中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55734980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com