Angular 角度:HTTP客户端转换树状数据结构
我从服务器获得了以下结构(根据JSON结构) 我想在一个有角度的物体上Angular 角度:HTTP客户端转换树状数据结构,angular,angular-httpclient,Angular,Angular Httpclient,我从服务器获得了以下结构(根据JSON结构) 我想在一个有角度的物体上 export interface Organization { name: string; lstDeparments: Department []; } export interface Department { name: string; lstRoles: string []; } 但不知何故,我不知道如何在Angular中设置匹配接口。因为属性name是动态变化的(例如Orga1,Orga2),属性
export interface Organization {
name: string;
lstDeparments: Department [];
}
export interface Department {
name: string;
lstRoles: string [];
}
但不知何故,我不知道如何在Angular中设置匹配接口。因为属性name
是动态变化的(例如Orga1
,Orga2
),属性列表也需要动态地填充内容
如何正确设置
界面
?(进行自动转换)这种数据结构有一种特定的语法:
interface Payload {
[key: string]: Orga;
}
interface Orga {
[key: string]: Department;
}
interface Department {
[key: string]: Role;
}
如果需要组织列表,则必须在对象上迭代,而不是在数组上迭代
您可以使用Object.keys
或在最近的浏览器中(或如果您有polyfill)执行此操作Object.entries
:
const orgas = Object.keys(payload).map(key => payload[key]);
const orgas = Object.entries(payload).map(([key, value]) => value);
您也可以使用throughSymbol.iterator
对对象进行迭代,但我认为这有点过分:
const有效载荷={
orga1:{name:'orga 1'},
orga2:{name:'orga 2'},
[符号.迭代器]:函数*(){
for(对象的常量键。键(此)){
交出这个[钥匙];
}
}
};
for(有效载荷的常量值){
console.log(值);
}
对于这种数据结构,您有一种特定的语法:
interface Payload {
[key: string]: Orga;
}
interface Orga {
[key: string]: Department;
}
interface Department {
[key: string]: Role;
}
如果需要组织列表,则必须在对象上迭代,而不是在数组上迭代
您可以使用Object.keys
或在最近的浏览器中(或如果您有polyfill)执行此操作Object.entries
:
const orgas = Object.keys(payload).map(key => payload[key]);
const orgas = Object.entries(payload).map(([key, value]) => value);
您也可以使用throughSymbol.iterator
对对象进行迭代,但我认为这有点过分:
const有效载荷={
orga1:{name:'orga 1'},
orga2:{name:'orga 2'},
[符号.迭代器]:函数*(){
for(对象的常量键。键(此)){
交出这个[钥匙];
}
}
};
for(有效载荷的常量值){
console.log(值);
}
(当然,您可以添加其他属性,例如“name”,只是那些无法识别的属性将被视为子接口)@ashish.gd从给定的结构来看,似乎不是这样。有效负载包含一个Orgas列表,这些Orgas都已命名。所以它不是一个数组,而是一个包含动态属性的对象,每个属性都是一个子接口。我读错了。删除我的评论以避免对OP或其他任何人造成任何混乱。回复的速度比我能够实现和思考的都快。无法接受之前的答案:-)Thx这非常有效+1尽管实施工作正常,但我对解决方案有一些小问题:-/。即如何获取组织的列表,例如组织
。正在尝试Payload.map(item=>Object.keys(item)[0])
在调试中是一个有效的(?)想法,但在Angular中,我得到了一个编译错误,因为Orga
中没有提供map
(您当然可以添加其他属性,例如“name”,只是那些未被识别的属性将被视为子接口)@ashish.gd,从给定的结构来看,它看起来不像。有效负载包含一个Orgas列表,这些Orgas都已命名。所以它不是一个数组,而是一个包含动态属性的对象,每个属性都是一个子接口。我读错了。删除我的评论以避免对OP或其他任何人造成任何混乱。回复的速度比我能够实现和思考的都快。无法接受之前的答案:-)Thx这非常有效+1尽管实施工作正常,但我对解决方案有一些小问题:-/。即如何获取组织的列表,例如组织
。正在尝试Payload.map(item=>Object.keys(item)[0])
在调试中是一个有效的(?)想法,但是在Angular中我得到了一个编译错误,因为Orga
中没有提供map
。