Arrays 如何在Laravel 5.*中返回具有相同名称键的嵌套数组的响应?

Arrays 如何在Laravel 5.*中返回具有相同名称键的嵌套数组的响应?,arrays,angular,multidimensional-array,laravel-5.3,laravel-5.4,Arrays,Angular,Multidimensional Array,Laravel 5.3,Laravel 5.4,我正在尝试使用Laravel和Angular 4实现treetable 为了完成这项任务,我在Angular中搜索了支持Treetable的好库之后,找到了适合我需要的库 我已经整合了一切,到目前为止看起来还不错 唯一的问题是,当我使用Api从后端primifaces树表获取数据时,无法识别来自LaravelAPI的json结构。原因是该库支持不同的Json结构 下面是Primifaces支持的Json结构 { "data": [ {

我正在尝试使用Laravel和Angular 4实现treetable

为了完成这项任务,我在Angular中搜索了支持Treetable的好库之后,找到了适合我需要的库

我已经整合了一切,到目前为止看起来还不错

唯一的问题是,当我使用Api从后端primifaces树表获取数据时,无法识别来自LaravelAPI的json结构。原因是该库支持不同的Json结构

下面是Primifaces支持的Json结构

{
    "data":
    [  
        {  
            "data":{  
                "name":"Documents",
                "size":"75kb",
                "type":"Folder"
            },
            "children":[
                {  
                    "data":{  
                        "name":"Work",
                        "size":"55kb",
                        "type":"Folder"
                    },
                    "children":[  
                        {  
                            "data":{  
                                "name":"Expenses.doc",
                                "size":"30kb",
                                "type":"Document"
                            }
                        },
                        {  
                            "data":{  
                                "name":"Resume.doc",
                                "size":"25kb",
                                "type":"Resume"
                            }
                        }
                    ]
                },
                {  
                    "data":{  
                        "name":"Home",
                        "size":"20kb",
                        "type":"Folder"
                    },
                    "children":[  
                        {  
                            "data":{  
                                "name":"Invoices",
                                "size":"20kb",
                                "type":"Text"
                            }
                        }
                    ]
                }
            ]
        },
        {  
            "data":{  
                "name":"Pictures",
                "size":"150kb",
                "type":"Folder"
            },
            "children":[  
                {  
                    "data":{  
                        "name":"barcelona.jpg",
                        "size":"90kb",
                        "type":"Picture"
                    }
                },
                {  
                    "data":{  
                        "name":"primeui.png",
                        "size":"30kb",
                        "type":"Picture"
                    }
                },
                {  
                    "data":{  
                        "name":"optimus.jpg",
                        "size":"30kb",
                        "type":"Picture"
                    }
                }
            ]
        }
    ]
}
laravel从我的API返回的json格式如下所示

{
  "data": [
    {
      "uuid": 110,
      "name": "Acuzyt Tablets",
      "Parent_ID": 65,
      "ContentStart_ID": 20026,
      "children": [
        {
          "uuid": 275,
          "name": "Hansenf",
          "Parent_ID": 110,
          "ContentStart_ID": 22608,
          "children": []
        }
      ]
    },
    {
      "uuid": 111,
      "name": "Pluserix",
      "Parent_ID": 65,
      "ContentStart_ID": 24050,
      "children": [
        {
          "uuid": 276,
          "name": "Manuel",
          "Parent_ID": 111,
          "ContentStart_ID": 22609,
          "children": []
        }
      ]
    },
    {
      "uuid": 112,
      "name": "Abbott - Vancomycin",
      "Parent_ID": 65,
      "ContentStart_ID": 19944,
      "children": [
        {
          "uuid": 272,
          "name": "Mozaicos",
          "Parent_ID": 112,
          "ContentStart_ID": 22605,
          "children": []
        }
      ]
    },
    {
      "uuid": 113,
      "name": "Abic Leucovorin Sol",
      "Parent_ID": 65,
      "ContentStart_ID": 19946,
      "children": [
        {
          "uuid": 273,
          "name": "Hansenm Mangole",
          "Parent_ID": 113,
          "ContentStart_ID": 22606,
          "children": []
        },
        {
          "uuid": 277,
          "name": "Mangole",
          "Parent_ID": 113,
          "ContentStart_ID": 22610,
          "children": []
        }
      ]
    },
    {
      "uuid": 114,
      "name": "Abic Vincristine",
      "Parent_ID": 65,
      "ContentStart_ID": 19947,
      "children": []
    }
  ]
}
getFileSystem(): any {
        return this.http.get('http://apiurl/api/v1/treetable')
                    .toPromise()
                    .then(res => <TreeNode[]> res.json().data)
                    .then(data => { return data; });
    }
ngOnInit():void {
        this.nodeService.getFileSystem().then(data => this.data = data);
        let newdat = this.data;

        console.log(newdat);
        this.cols = [
        {field: 'uuid', header: 'Uuid'},
        {field: 'name',header: 'Name'},
        {field: 'Parent_ID', header: 'ParentID'},
        {field: 'ContentStart_ID', header: 'StartID'}
        ];
    }
所以当我使用我的API时,Primifaces不显示记录值,我得到了未定义的角度

返回我的API的Laravel代码如下所示:

public function json(){
        $page = $this->request->get('page',1);
        $perPage = 5;
        $projects = Project::find(65);

        $childs = $projects->nestedProject($projects->uuid,$page, $perPage);

        return response()->json(['data'=>$childs->toArray()],201);
    }
从角度来看,服务是这样的

{
  "data": [
    {
      "uuid": 110,
      "name": "Acuzyt Tablets",
      "Parent_ID": 65,
      "ContentStart_ID": 20026,
      "children": [
        {
          "uuid": 275,
          "name": "Hansenf",
          "Parent_ID": 110,
          "ContentStart_ID": 22608,
          "children": []
        }
      ]
    },
    {
      "uuid": 111,
      "name": "Pluserix",
      "Parent_ID": 65,
      "ContentStart_ID": 24050,
      "children": [
        {
          "uuid": 276,
          "name": "Manuel",
          "Parent_ID": 111,
          "ContentStart_ID": 22609,
          "children": []
        }
      ]
    },
    {
      "uuid": 112,
      "name": "Abbott - Vancomycin",
      "Parent_ID": 65,
      "ContentStart_ID": 19944,
      "children": [
        {
          "uuid": 272,
          "name": "Mozaicos",
          "Parent_ID": 112,
          "ContentStart_ID": 22605,
          "children": []
        }
      ]
    },
    {
      "uuid": 113,
      "name": "Abic Leucovorin Sol",
      "Parent_ID": 65,
      "ContentStart_ID": 19946,
      "children": [
        {
          "uuid": 273,
          "name": "Hansenm Mangole",
          "Parent_ID": 113,
          "ContentStart_ID": 22606,
          "children": []
        },
        {
          "uuid": 277,
          "name": "Mangole",
          "Parent_ID": 113,
          "ContentStart_ID": 22610,
          "children": []
        }
      ]
    },
    {
      "uuid": 114,
      "name": "Abic Vincristine",
      "Parent_ID": 65,
      "ContentStart_ID": 19947,
      "children": []
    }
  ]
}
getFileSystem(): any {
        return this.http.get('http://apiurl/api/v1/treetable')
                    .toPromise()
                    .then(res => <TreeNode[]> res.json().data)
                    .then(data => { return data; });
    }
ngOnInit():void {
        this.nodeService.getFileSystem().then(data => this.data = data);
        let newdat = this.data;

        console.log(newdat);
        this.cols = [
        {field: 'uuid', header: 'Uuid'},
        {field: 'name',header: 'Name'},
        {field: 'Parent_ID', header: 'ParentID'},
        {field: 'ContentStart_ID', header: 'StartID'}
        ];
    }
我在这里试图实现的是从Laravel后端获得与primifaces相同的json格式


如果您查看这两个json,您会发现primifaces的json为每个json对象获取了
数据。

您需要修改json输出,您可以使用转换器来完成此操作。好的,让我看看链接