簡體   English   中英

從 angular 中的 http.get() 調用返回的數據中獲取特定字段

[英]Get specific fields from the data returned from the http.get() call in angular

get調用返回以下數據

{"status":"success","data":[{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile_image":""},{"id":"2","employee_name":"Garrett Winters","employee_salary":"170750","employee_age":"63","profile_image":""},{"id":"3","employee_name":"Ashton Cox","employee_salary":"86000","employee_age":"66","profile_image":""},{"id":"4","employee_name":"Cedric Kelly","employee_salary":"433060","employee_age":"22","profile_image":""},{"id":"5","employee_name":"Airi Satou","employee_salary":"162700","employee_age":"33","profile_image":""},{"id":"6","employee_name":"Brielle Williamson","employee_salary":"372000","employee_age":"61","profile_image":""},{"id":"7","employee_name":"Herrod Chandler","employee_salary":"137500","employee_age":"59","profile_image":""},{"id":"8","employee_name":"Rhona Davidson","employee_salary":"327900","employee_age":"55","profile_image":""},{"id":"9","employee_name":"Colleen Hurst","employee_salary":"205500","employee_age":"39","profile_image":""},{"id":"10","employee_name":"Sonya Frost","employee_salary":"103600","employee_age":"23","profile_image":""},{"id":"11","employee_name":"Jena Gaines","employee_salary":"90560","employee_age":"30","profile_image":""},{"id":"12","employee_name":"Quinn Flynn","employee_salary":"342000","employee_age":"22","profile_image":""},{"id":"13","employee_name":"Charde Marshall","employee_salary":"470600","employee_age":"36","profile_image":""},{"id":"14","employee_name":"Haley Kennedy","employee_salary":"313500","employee_age":"43","profile_image":""},{"id":"15","employee_name":"Tatyana Fitzpatrick","employee_salary":"385750","employee_age":"19","profile_image":""},{"id":"16","employee_name":"Michael Silva","employee_salary":"198500","employee_age":"66","profile_image":""},{"id":"17","employee_name":"Paul Byrd","employee_salary":"725000","employee_age":"64","profile_image":""},{"id":"18","employee_name":"Gloria Little","employee_salary":"237500","employee_age":"59","profile_image":""},{"id":"19","employee_name":"Bradley Greer","employee_salary":"132000","employee_age":"41","profile_image":""},{"id":"20","employee_name":"Dai Rios","employee_salary":"217500","employee_age":"35","profile_image":""},{"id":"21","employee_name":"Jenette Caldwell","employee_salary":"345000","employee_age":"30","profile_image":""},{"id":"22","employee_name":"Yuri Berry","employee_salary":"675000","employee_age":"40","profile_image":""},{"id":"23","employee_name":"Caesar Vance","employee_salary":"106450","employee_age":"21","profile_image":""},{"id":"24","employee_name":"Doris Wilder","employee_salary":"85600","employee_age":"23","profile_image":""}]}

當我從訂閱返回數據時,我試圖獲取數據,然后只從中獲取employee_age 和employee_name

this.service.getEmployee().subscribe((data)=>this.employees = data)

控制台中出現錯誤錯誤:找不到支持“對象”類型的 object“[對象對象]”的不同。 NgFor 僅支持綁定到 Iterables,例如 Arrays。

應該是什么方法,我正在學習 angular 請幫忙,我怎樣才能從中獲取年齡和姓名

請注意 JSON 數據的格式,它基本上是一個帶有兩個鍵的 object,“狀態”是字符串,“數據”是數組。

話雖如此,如果您只想獲取結果的“數據”部分,則必須像這樣修改訂閱代碼

this.service.getEmployee().subscribe((res)=>this.employees = res.data)

例如,如果您想將獲取 json 的服務修改為您選擇的不同格式,您有map rxjs 運算符,可以將您的數據從一種格式轉換為另一種格式,

例如,如果您的員工數組由 object 組成,只有兩個字段employee_ageemployee_name ,您可以 map 這樣的結果

    this.service.getEmployee().pipe(map(res=>{
let employeeArr: Employee[] = [];
res.data.forEach(x=>{
    let employeeObj: Employee=new Employee();
    employeeObj.employee_age = x.employee_age;
    employeeObj.employee_name = x.employee.name;

    employeeArr.push(employeeObj);
});
return employeeArr;
}).subscribe((res)=>this.employees = res);

所以基本上我們已經將我們的響應轉換為另一種格式。

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM