Json 按特定格式以角度分隔和排列数据?

Json 按特定格式以角度分隔和排列数据?,json,for-loop,angular5,Json,For Loop,Angular5,嗨,我正在开发Angular 5应用程序。我正在尝试以特定的格式排列数据。我有json数据。我想把它转换成特定的格式 具体格式如下 this.nodes = [ { name: 'root1', children: [ { name: 'child1' } ] }, { name: 'root2', hasChildren: true },

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

上面我的代码不工作。有人能帮我做这件事吗?任何帮助都将不胜感激。谢谢。

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

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);
}

谢谢你的工作,山猫。我跟随他们以相同的方式显示数据。您编写的代码将以所需的格式转换数据。但数据并没有显示树格式,也没有给出任何错误。如果我把他们提供的数据显示出来。你知道我遗漏了什么吗?这需要一段时间来检查。我会回复你的。我通过添加这个.tree.treeModel.update()修复了这个问题;谢谢你的努力。它现在正在发挥作用。