json - 在 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"
}
我可以在构造函数的类中重建模型吗?如果是这样,我还没有在网上找到任何东西。
如果我需要提供任何进一步的信息,请告诉我。
谢谢
解决方案
让我们使用建议的代码片段来展平初始对象。然后我们可以过滤那些我们需要包含在最终对象中的属性:
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
接受属性数组,以便将它们包含在最终结果中。希望这对您有所帮助。
推荐阅读
- sql - 在没有 CTE 的情况下拆分 SQL 中的重叠日期
- node.js - 停止静态服务的 React 应用程序调用服务器路径
- c++ - 使用命名的 lambda 与函数 - 在 lambda 的情况下变量的额外空间使用?
- python - Python Flask Render_Template 获取/设置变量
- flutter - Dart 中的 case 表达式必须是常量
- reactjs - 选择从输入生成的动态 - reactjs
- java - RecyclerView的TextView内缩进长句和数字
- time-series - 线性插值对数时间序列
- rust - 在不为循环数据结构建模的单线程应用程序中何时需要引用计数?
- amazon-web-services - 连接模型的 AWS Amplify GraphQL 授权