【问题标题】:Segregate and arrange data in specific format in Angular?在Angular中以特定格式分离和排列数据?
【发布时间】:2018-07-24 16:25:08
【问题描述】:

您好,我正在开发 Angular 5 应用程序。我正在尝试以特定格式排列数据。我有json数据。我想将其转换为特定格式。

下面是具体格式。

 this.nodes = [

      {
        name: 'root1',
        children: [
          { name: 'child1' }
        ]
      },

      {
        name: 'root2',
        hasChildren: true
      },

      {
        name: 'root3'
      }

    ];

以下是我的数据。

   {  
       "userid":"e75792f8-cfea-460e-aca2-07a778c92a7c",
       "tenantid":"00000000-0000-0000-0000-000000000000",
       "username":"karthik",
       "emailaddress":"john@krsars.onmicrosoft.com",
       "isallowed":false,
       "userroles":[  
          {  
             "userroleid":"b81e63d1-09da-4aa0-af69-0f086ddb20b4",
             "userid":"e75792f8-cfea-460e-aca2-07a778c92a7c",
             "roleid":"85d2f668-f523-4b64-b177-b1a78db74234",
             "tenantappid":1,
             "validfrom":"2018-01-24T00:00:00",
             "validto":"2018-01-24T00:00:00",
             "isactive":true,
          }
       ]
    }

根据以上数据,我正在尝试转换。从上面的数据中,我将每个键/值对转换为上面给定的格式,例如,“userid”:“e75792f8-cfea-460e-aca2-07a778c92a7c”我想将其设为

 {
        name: 'userid',
         children: [
           { name: 'e75792f8-cfea-460e-aca2-07a778c92a7c' }
         ]
 }

所以下面是我的代码。

 for (let key in results) {
     if(results[key] instanceof Array){
        this.nodes+=
          name:key,
          hasChildren: true
        }+"}"
     }
     else
     {
       this.nodes+="{"+name=key,
       children: [
        { name: results[key] }
      ]+"}"
     }
    }

最后当我尝试在控制台中显示我的数据时。

console.log(this.nodes);

上面我的代码不起作用。有人可以帮我完成这项工作吗?任何帮助,将不胜感激。谢谢。

【问题讨论】:

    标签: json for-loop angular5


    【解决方案1】:

    这是一个工作示例。只是为了告诉你该走哪条路:

    doIt() {
        let results =  JSON.parse('{"userid":"e75792f8-cfea-460e-aca2-07a778c92a7c","tenantid":"00000000-0000-0000-0000-000000000000","username":"karthik","emailaddress":"john@krsars.onmicrosoft.com","isallowed":false,"userroles":[{"userroleid":"b81e63d1-09da-4aa0-af69-0f086ddb20b4","userid":"e75792f8-cfea-460e-aca2-07a778c92a7c","roleid":"85d2f668-f523-4b64-b177-b1a78db74234","tenantappid":1,"validfrom":"2018-01-24T00:00:00","validto":"2018-01-24T00:00:00","isactive":true}]}');
    
         const nodes = [];
    
         for (const key in results) {
             if (results[key] instanceof Array) {
               const containerTyp2 = {name: '', hasChildren: false};
    
               containerTyp2.name = key;
               containerTyp2.hasChildren = true;
    
               nodes.push(containerTyp2);
            } else {
               const object = {name: ''};
               const containerTyp1 = {name: '', children: []};
    
               object.name = key;
               containerTyp1.name = key;
               containerTyp1.children.push(object);
    
               nodes.push(containerTyp1);
           }
         }
    
         console.log('nodes: ', nodes);
    }
    

    【讨论】:

    • 感谢您的工作 Lynx。我正在关注github.com/500tech/angular-tree-component/blob/master/example/…,以与他们显示的方式相同的方式显示数据。您编写的代码会将数据转换为完全需要的格式。但是数据没有显示树格式,也没有给出任何错误。如果我把他们给出的数据显示出来。知道我在这里缺少什么吗?
    • 这需要一段时间来检查。我会回复你的。
    • 我通过添加 this.tree.treeModel.update(); 解决了这个问题;谢谢你的努力。它现在像魅力一样工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多