如何解包 angular 中的 Json 数据?
How to Unwrap Json data in angular?
我有一个 Json 这种格式的数据
我想在调用其余 API 时在 angular 打字稿中解析此数据。怎么做。
这部分是我的 java class 对象,我想将其转换为我的模型 class 数组。
"gameId": 66,
"kashScore": 0,
"samScore": 1,
"wonBy": "Sam",
"createUserId": 0,
"lastModifiedUserId": 0,
"creationDate": "2020-04-20T14:05:44.263+0000",
"lastModifiedDateTime": "2020-04-20T14:05:44.264+0000",
"sessionId": 1000,
"count": null
我的模型class
此信息用于跟踪分页。
我试过这样的东西,但它给出了错误:-
您的回复只是一个数组。表示 Fifa[]
的数据是响应数组中的第一项。
HttpClient
不会神奇地为您转换它。如果您想 return Fifa[]
来自您的服务,那么您需要将您的响应映射到该类型。
return this.http.get<any[]>(fifaUrl).pipe(
map((response: any[]) => response[0])
);
编辑
您已声明要return 回复中的所有信息。在那种情况下,您应该 return 一个从服务函数实现 GetResponse
的对象(并且可能考虑一个更合适的名称)。
fetchAllGamesRecordPaginate(
pageNumber: number, pageSize: number
): Observable<GetResponse> {
const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize};
return this.httpClient.get(fifaUrl).pipe(
map((response: any[]) => {
const pagination = response[1];
return {
fifa: response[0],
totalRecord: pagination.totalRecord,
pageSize: pagination.pageSize,
pageNumber: pagination.pageNumber,
totalPages: pagination.totalPages
};
})
);
}
这里我将响应数组映射到一个实现了 GetResponse
.
的对象
如果您希望该方法只是 return 一个 Observable<Fifa[]>
,您应该在 Observable
:
上使用地图运算符
return this.httpClient.get<GetResponse>(fifaUrl).pipe(
map((response) => response.fifa)
);
将 return 类型更新为 Observable<GetResponse>
然后您需要将响应映射到 GetResponse 结构
fetchAllGamesRecordPaginate(pageNumber:number,pageSize: number):Observable<GetResponse>{
const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize};
return this.httpClient.get(fifaUrl)
.pipe(([fifa,paginationInfo]) => (
{
fifa ,
...paginationInfo
}
)
);
}
the api return an array with two items the first is the fifa[] and the
second is an object with pagination information
我有一个 Json 这种格式的数据
我想在调用其余 API 时在 angular 打字稿中解析此数据。怎么做。
这部分是我的 java class 对象,我想将其转换为我的模型 class 数组。
"gameId": 66,
"kashScore": 0,
"samScore": 1,
"wonBy": "Sam",
"createUserId": 0,
"lastModifiedUserId": 0,
"creationDate": "2020-04-20T14:05:44.263+0000",
"lastModifiedDateTime": "2020-04-20T14:05:44.264+0000",
"sessionId": 1000,
"count": null
我的模型class
此信息用于跟踪分页。
我试过这样的东西,但它给出了错误:-
您的回复只是一个数组。表示 Fifa[]
的数据是响应数组中的第一项。
HttpClient
不会神奇地为您转换它。如果您想 return Fifa[]
来自您的服务,那么您需要将您的响应映射到该类型。
return this.http.get<any[]>(fifaUrl).pipe(
map((response: any[]) => response[0])
);
编辑
您已声明要return 回复中的所有信息。在那种情况下,您应该 return 一个从服务函数实现 GetResponse
的对象(并且可能考虑一个更合适的名称)。
fetchAllGamesRecordPaginate(
pageNumber: number, pageSize: number
): Observable<GetResponse> {
const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize};
return this.httpClient.get(fifaUrl).pipe(
map((response: any[]) => {
const pagination = response[1];
return {
fifa: response[0],
totalRecord: pagination.totalRecord,
pageSize: pagination.pageSize,
pageNumber: pagination.pageNumber,
totalPages: pagination.totalPages
};
})
);
}
这里我将响应数组映射到一个实现了 GetResponse
.
如果您希望该方法只是 return 一个 Observable<Fifa[]>
,您应该在 Observable
:
return this.httpClient.get<GetResponse>(fifaUrl).pipe(
map((response) => response.fifa)
);
将 return 类型更新为 Observable<GetResponse>
然后您需要将响应映射到 GetResponse 结构
fetchAllGamesRecordPaginate(pageNumber:number,pageSize: number):Observable<GetResponse>{
const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize};
return this.httpClient.get(fifaUrl)
.pipe(([fifa,paginationInfo]) => (
{
fifa ,
...paginationInfo
}
)
);
}
the api return an array with two items the first is the fifa[] and the second is an object with pagination information