我有一个api响应返回:
{
"code": 0,
"message": "hierarchy list",
"payload": [
{
"id": 2,
"name": "nameParent",
"code": "WUcw",
"childsOfPayload": [
{
"id": 5,
"name": "NameChild1",
"code": "ozyW",
"status": "Active",
"childsofChildOfPayload": [
{
"id": 8,
"name": "NameChild2",
"code": "aitq",
"order": 30,
},
]}]}]}
我正在尝试在每个子节点中获取不同的对象,ChildOfPayload和childOfChildOfpayload。
首先,我返回了有效负载的不同名称值:
getAllPayloadName() {
this.userService.getName().subscribe(
data => {
this.values= data;
}
);
}
但我必须做些什么才能让每个孩子的名字与不同的父母价值相关联!
我的意思是在这种情况下。
NameChild1
NameChild2
我试过这个:
manipulateDataa() {
this.values.subscribe(x => {
x.payload.foreach((y:any) => {
y.childs.foreach((z:any) => {
console.log( z.name)
})
})
})
}
然后在getAllPayloadName中调用它,但仍然无法正常工作。可能有什么不对?
答案 0 :(得分:1)
你可以做这样的事情来获得你想要的输出。 Here你可以阅读更多关于我使用的forEach循环的信息。
data = {
"code": 0,
"message": "hierarchy list",
"payload": [
{
"id": 2,
"name": "nameParent",
"code": "WUcw",
"childsOfPayload": [
{
"id": 5,
"name": "NameChild1",
"code": "ozyW",
"status": "Active",
"childsofChildOfPayload": [
{
"id": 8,
"name": "NameChild2",
"code": "aitq",
"order": 30,
},
]}]}]}
names = []
function iterator (obj, namesArr){
Object.keys(obj).forEach(key => {
if(key === "name") {
namesArr.push(obj[key])
} else if(typeof obj[key] === "object") {
iterator(obj[key][0], names)
}
})
}
iterator(data.payload[0], names)
console.log(names)
答案 1 :(得分:0)
如果api结果结构是强类型且不会更改,则可以通过此行访问子有效负载名称
console.log(JSON.stringify(obj.payload[0].childsOfPayload[0].name));
console.log(JSON.stringify(obj.payload[0].childsOfPayload[0].childsofChildOfPayload[0].name));