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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改(映射)JSON列表形状 - 在TypeScript中向对象添加标记相关的知识,希望对你有一定的参考价值。

我试图在我的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'标签,其中可能包含许多'数据'?

答案

看看这个逻辑:

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);
另一答案

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

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

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

以上是关于更改(映射)JSON列表形状 - 在TypeScript中向对象添加标记的主要内容,如果未能解决你的问题,请参考以下文章

用于发布 JSON 列表的 RestKit 映射

在 React 中映射 JSON 数组时如何使用 onClick 定位列表中的单个项目

使用 RestKIt 在核心数据实体中映射 json 对象

如何映射 json 响应并创建带有索引的简单列表

Restkit如何将任意json(键可能会超时更改)映射到NSDictionary

将 Json 响应中的对象列表映射到颤动中的列表