javascript - 如何在有或没有 lodash 的情况下正确迭代和解析 javascript 中的嵌套对象
问题描述
我目前正在开发一项返回以下有效负载的服务:
{
"account1": {
"app1": {
"status": "Online",
"comments": "blah blah",
"events": [
{
"date": "some date",
"generated_by": "some user"
}
]
}
},
"account2": {
"app1": {
"status": "Offline",
"comments": "blah blah bleh",
"events": [
{
"date": "some date",
"generated_by": "some user"
}
]
},
"app2": {
"status": "Online",
"comments": "blah blah",
"events": [
{
"date": "some date",
"generated_by": "some user"
}
]
}
}
}
我正在尝试使用以下字段呈现表格:
-------------------------------
Application | Account | Status
-------------------------------
app1 | account1 | Online
app1 | account2 | Offline
app2 | account2 | Online
通常,如果我的有效负载类似于对象列表,那么这很容易做到,但我有点卡在这里。
我尝试通过提取每个字段并通过执行以下操作创建新的有效负载来规范化此有效负载:
const extractAccountNumber = Object.values(payload).map(account => ({account: account}))
这将返回:
[
{
"account": "account1"
},
{
"account": "account2"
}
]
我想以相同的方式继续使用应用程序名称,一旦获得所有字段,我将合并有效负载。这已被证明是超级麻烦的,我确信有一种更好、更有效的方法来实现这一点,而我可能错过了这一点。任何反馈都会帮助我理解如何使用带有或不带有 lodash 的 javascript 来实现这一点。
解决方案
按第一级迭代,然后按第二级迭代:
table = [];
for (accountName in apiResponse) {
account = apiResponse[accountName];
for (appName in account) {
app = account[appName];
table.push({
application: appName,
account: accountName,
status: app.status,
});
}
}
那么表是这样的:
[
{
"application": "app1",
"account": "account1",
"status": "Online"
},
{
"application": "app1",
"account": "account2",
"status": "Offline"
},
{
"application": "app2",
"account": "account2",
"status": "Online"
}
]
推荐阅读
- keras - Keras 预测结果(获取分数,使用 argmax)
- javascript - 为什么 (&) 符号未显示在 Android 默认消息传递应用程序中?
- python - 如何使用 Selenium Webdriver 在 svg 标签中显示工具提示
- apache-nifi - why the recent NiFi logs are getting deleted automatically from the log directory?
- windows - 在 Windows 上安装 docker
- ios - 无法将 ****.com 团队与 Apple Developer Portal 同步。未知此类主机。(Xamarin 项目)。?
- php - 应用打开时将推送通知消息显示为 JSON 字符串
- react-native - 从父标题按钮调用子组件函数
- c# - Loacl PDF未在cefsharp 71中打开
- c++ - 从文件中读入一个数组