在Angular中以特定格式隔离和排列数据?

时间:2018-07-24 07:43:59

标签: json for-loop angular5

嗨,我正在开发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);

以上代码无效。有人可以帮我做这个工作吗?任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分: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);
}