我正在研究内部孩子的json数据。我需要在json中获得所有名称。
json数据
$sqlinsert = "INSERT INTO users(userID,username,password)
VALUES ('','$userUsername','$userPassword')";
在我的应用程序中,每个孩子的名字都必须使用angular2存储在变量中。 根据我的应用程序中的用户,数据是动态更改
答案 0 :(得分:1)
这是一个可能的实现的plunkr https://plnkr.co/edit/njM1HLx7vuZY9loto2pM?p=preview
创建您自己的数据类型:
export class MyNode {
children:Array<MyNode>;
name:string;
}
然后创建一个方法来递归循环父母以获取他们的名字和孩子的名字
parents:Array<MyNode> = [
{
"children": [
{
"children": [
{
"children": [],
"name": "P Sub Child 3",
},
{
"children": [
{
"children":[],
"name" : "data"
}
],
"name": "PSubChild2",
}
],
"name": "PChild1",
},
{
"children": [
{
"children": [],
"name": "PSubChild3",
}
],
"name": "PChild2",
}
],
"name": "Parent1",
},
{
"children": [],
"name": "Parent2",
}
];
names:Array<string>=[];
getAllNames(){
this.getNameHelper(this.parents);
}
getNameHelper(parents:Array<MyNode>){
for(var p of parents){
if(p.name){
this.names.push(p.name);
}
if(p.children){
this.getNameHelper(p.children);
}
}
}
答案 1 :(得分:1)
根据我的理解,您只想获得name
属性的值,然后按照您所拥有的层次结构数据,这里大多数建议您必须使用递归来获取name
属性。使用Rxjs,它会变得更容易,如下所示:
Observable.from(this.res)
.expand(d => d.children.length > 0 ? Observable.from(d.children) : Observable.empty())
.subscribe(d => console.log(d.name));
我在这里制作了一个工作样本:https://jsfiddle.net/ibrahimislam/ba17w8xz/1/