首页 > 解决方案 > 在 Angular 2+ 中重构 JSON 响应

问题描述

我目前正在接收一个高度嵌套的 web api JSON 响应,我想对其进行重构,只提取我需要的数据并使其更简单。

我将如何在 Angular 2+/Typescript 中执行此操作?

任何帮助将非常感激。

说我有这样的事情:

"O1": {
    "P1": "Something",
    "A1": [{
       "P2": "Something",
       "A2": [{
         "P3": "Something"
        }]
    }]
    "P4": "Something"
}

我想将其重组为:

"O1": {
    "P1": "Something",
    "P2": "Something",
    "P3": "Something"
}

我可以在构造函数的类中重建模型吗?如果是这样,我还没有在网上找到任何东西。

如果我需要提供任何进一步的信息,请告诉我。

谢谢

标签: jsonangulartypescript

解决方案


让我们使用建议的代码片段来展平初始对象。然后我们可以过滤那些我们需要包含在最终对象中的属性:

 function filterObj(obj: any, propsForFilter: string[]) {
  const result = {};
  for (let prop in obj) {
    const filteredProp = propsForFilter.find(p => prop.includes(p));
    if (filteredProp) {
      result[filteredProp] = obj[prop];
    }
  }
  return result;
}
const flattened = flattenObject(obj);
console.log(flattened, filterObj(flattened, ['P1', 'P2']));

此方法filterObj接受属性数组,以便将它们包含在最终结果中。希望这对您有所帮助。


推荐阅读