我正在向服务器发出get请求,并且需要将响应存储在2d数组中。我不想实现该接口并为它存储值,因为响应结构会不时发生变化,并且我也不想在更改接口结构时对其进行修改。
这是我的代码, 我为所有组件创建了通用服务,以进行获取和发布请求。
constructor( private http: HttpClient ) { }
request(method: string, url: string, data?: any ) {
return this.http.request(method, url, {body: data} )
}
从我的一个组件中,我将此方法称为request(method: string, service: string, data?: any)
在我的component.ts
const user_list = this.my_service.request('get','my-url');
user_list.subscribe(
response => { console.log(response); },
(err) => this.error_handle.errorHandler(err),
);
我的回复看起来像这样
Response: [
{
"name": "anna",
"age": "21",
"createdAt": 1533673450284,
"mobile": 9876543210,
"friends": [
{
"name": "katy",
"age": "21",
"mobile": 9876543210
}
],
"updatedAt": 1533673450284,
"timestamp": 1533673451240,
"stats": {
"friends": 10,
"Active": 5,
}
}
]
注意:我的回复中将包含很多用户列表,并且每个用户列表下还会有很多朋友列表(例如,我给出了简单的结构)
就像我之前说的那样,这个结构将会发生很大的变化,所以我不想有一个预定义的数组。
我需要将用户列表(包括朋友列表)存储在二维数组中,并在以后访问。还是有更好的方法来实现这一点?
我试图这样实现,但失败了
data: string[][];
for (const obj of response ) {
this.icounter++;
for (const key in obj ) {
this.data[this.icounter][this.jcounter] = obj [key] ;
this.jcounter++;
}
}
我期望这样的输出,用户列表应该是这样的。
[ ["anna"],["21"],["1533673450284"],["9876543210"],...],
["katy"],["22"],["1533673454820"],["9876543210"],...]
]
每个用户的朋友列表应位于每个用户单独的二维数组中。
[ ["katy"],["21"],["9876543210"],...],
["Friend2"], ["age"], ["Mobile no"]
]
我不知道这是否是一个好习惯,我想不出任何其他解决方案。