如何在2d数组中存储HttpClient获取请求值-Angular 6

时间:2018-08-10 03:40:49

标签: angular angular6

我正在向服务器发出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"]
]

我不知道这是否是一个好习惯,我想不出任何其他解决方案。

0 个答案:

没有答案