更改(映射)JSON列表形状 - 在TypeScript中向对象添加标记

问题描述 投票:0回答:2

我试图在我的Angular(TypeScript)项目中更改通过REST请求收到的JSON列表。

最初的JSON看起来像这样:

[  
   {  
      "id":1,
      "position":3,
      "articleNumber":6
   },
   {  
      "id":2,
      "position":2,
      "articleNumber":7
   }
]

我需要它成为:

{  
   "data":[  
      {  
         "data":{  
            "id":1,
            "position":3,
            "articleNumber":6
         }
      },
      {  
         "children":[  
            {  
               "data":{  
                  "id":2,
                  "position":2,
                  "articleNumber":7
               }
            }
         ]
      }
   ]
}

我设法通过创建一个新对象{data:}来添加'data'标签,然后将data.map的结果分配给data属性。

const mapped = { data: array.map(item => ({ data: item }))};

结果,我明白了:

{  
   "data":[  
      {  
         "data":{  
            "id":1,
            "position":3,
            "articleNumber":6
         }
      },
      {  
         "data":{  
            "id":2,
            "position":2,
            "articleNumber":7
         }
      }
   ]
}

如何添加'children'标签,其中可能包含许多'数据'?

json angular typescript dictionary tags
2个回答
1
投票

看看这个逻辑:

let array = [  {  
  "id":1,
  "position":3,
  "articleNumber":6},{  
  "id":2,
  "position":2,
  "articleNumber":7}];

const mapped1 = { data: array[0]};
const mapped2 = { children: array.map((item, index) => ({ data: item }))} ;
const final = {data:[mapped1]};

final.data.push(mapped2);

console.log(final);

0
投票

从'@ angular / http'导入{Response};

在您的服务:.map((item: Response) => item.json());

现在,在你的控制器(component.ts)中使用.subscribe(),你将获得JSON中的对象。

© www.soinside.com 2019 - 2024. All rights reserved.