首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将嵌套数组从多个级别合并并读取子级下的父键值的拨动规范

将嵌套数组从多个级别合并并读取子级下的父键值的拨动规范
EN

Stack Overflow用户
提问于 2021-02-22 18:02:56
回答 1查看 212关注 0票数 2

我很难得到想要的结果。有人能帮我找到正确的解决方案吗。

我尝试了不同的规格,并注意到成功了。当将父id添加到相应的数组中时,我将面临问题。

请在这里帮忙。

输入JSON:

代码语言:javascript
复制
{
  "device": {
    "id": "336 A6",
    "shelves": [
      {
        "shelfID": "1",
        "slots": [
          {
            "slotID": "1",
            "cards": {
              "cardID": "1",
              "subSlots": [
                {
                  "slotID": "mda-1",
                  "cards": {
                    "cardID": "1/1",
                    "ports": [
                      {
                        "portID": "1/1/1",
                        "adminStatus": "up"
                      },
                      {
                        "portID": "1/1/2",
                        "adminStatus": "up"
                      }
                    ]
                  }
                },
                {
                  "slotID": "mda-2",
                  "cards": {
                    "cardID": "2/1",
                    "ports": [
                      {
                        "portID": "2/1/1",
                        "adminStatus": "up"
                      },
                      {
                        "portID": "2/1/2",
                        "adminStatus": "up"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "slotID": "11",
            "cards": {
              "cardID": "11",
              "ports": [
                {
                  "portID": "11/1/1",
                  "adminStatus": "up"
                },
                {
                  "portID": "11/1/2",
                  "adminStatus": "up"
                }
              ]
            }
          }
        ]
      },
      {
        "shelfID": "esat-1",
        "ports": [
          {
            "portID": "esat-1/1/1",
            "adminStatus": "down"
          },
          {
            "portID": "esat-1/1/2",
            "adminStatus": "up"
          }
        ]
      }
    ]
  }
}

下面是我试过的震动规范

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "device": {
        "shelves": {
          "*": {
            "ports": {
              "*": "physicalResource.ports[&2]",
              "@(1,shelfID)": "physicalResource.ports[&2].parentId"
            },
            "slots": {
              "*": {
                "cards": {
                  "ports": {
                    "*": "physicalResource.ports[&5]",
                    "@(1,cardID)": "physicalResource.ports[&5].parentId"
                  },
                  "subSlots": {
                    "*": {
                      "cards": {
                        "ports": {
                          "*": "physicalResource.ports[&8]",
                          "@(1,cardID)": "physicalResource.ports[&8].parentId"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

预期产出:

代码语言:javascript
复制
{
  "physicalResource": {
    "ports": [
      {
        "id": "1/1/1",
        "parentId": "1/1",
        "state": "up"
      },
      {
        "id": "1/1/2",
        "parentId": "1/1",
        "state": "up"
      },
      {
        "id": "2/1/1",
        "parentId": "2/1",
        "state": "up"
      },
      {
        "id": "2/1/2",
        "parentId": "2/1",
        "state": "up"
      },
      {
        "id": "11/1/1",
        "parentId": "11/1",
        "state": "up"
      },
      {
        "id": "11/1/2",
        "parentId": "11/1",
        "state": "up"
      },
      {
        "id": "11/1/1",
        "parentId": "11/1",
        "state": "up"
      },
      {
        "id": "11/1/2",
        "parentId": "11/1",
        "state": "up"
      },
      {
        "id": "esat-1/1/1",
        "parentSubCardId": "esat-1",
        "state": "up"
      },
      {
        "id": "esat-1/1/2",
        "parentSubCardId": "esat-1",
        "state": "up"
      }
    ]
  }
}

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2021-03-12 08:23:20

这可以分两班完成。

  1. First shift使用数组索引和类型创建组。
  2. 第二次移位将这些组转换为数组

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "device": {
        "shelves": {
          "*": {
            "ports": {
              "*": {
                "@(2,shelfID)": "ports_&3_&1.parentSubCardId",
                "portID": "ports_&3_&1.id",
                "adminStatus": "ports_&3_&1.state"
              }
            },
            "slots": {
              "*": {
                "cards": {
                  "ports": {
                    "*": {
                      "@(2,cardID)": "slots_cards_&4_&1.parentId",
                      "portID": "slots_cards_&4_&1.id",
                      "adminStatus": "slots_cards_&4_&1.state"
                    }
                  },
                  "subSlots": {
                    "*": {
                      "cards": {
                        "ports": {
                          "*": {
                            "@(2,cardID)": "sub_slots_&4_&1.parentId",
                            "portID": "sub_slots_&4_&1.id",
                            "adminStatus": "sub_slots_&4_&1.state"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "physicalResource.ports[]"
    }
  }
]

我建议你不用第二次轮班的时间来看看发生了什么事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66321042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档