首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Merge :合并数组

Merge :合并数组
EN

Stack Overflow用户
提问于 2022-02-25 18:14:30
回答 1查看 111关注 0票数 0

我试图为下面的输入创建一个转换:

代码语言:javascript
复制
{
  "Empresa": "13530",
  "Rotas": {
    "Codigo": "4740523719166",
    "Entregas": [
      {
        "Cliente": {
          "Codigo": "4083082796",
          "Nome": "EMPRESA TESTE",
          "Tipo": 1
        },
        "Pedidos": [
          {
            "Codigo": "5327053",
            "NotasFiscais": [
              {
                "Numero": "216550",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "23702",
                      "Nome": "PRODUTO TESTE 2"
                    },
                    "Quantidade": "5.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "Cliente": {
          "Codigo": "4083082796",
          "Nome": "EMPRESA TESTE",
          "Tipo": 1
        },
        "Pedidos": [
          {
            "Codigo": "5327054",
            "NotasFiscais": [
              {
                "Numero": "216558",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "2694",
                      "Nome": "PRODUTO TESTE02"
                    },
                    "Quantidade": "6.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "Cliente": {
          "Codigo": "5589685412",
          "Nome": "EMPRESA TESTE02",
          "Tipo": 1
        },
        "Pedidos": [
          {
            "Codigo": "5327060",
            "NotasFiscais": [
              {
                "Numero": "316270",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "219",
                      "Nome": "PRODUTO EXEMPLO"
                    },
                    "Quantidade": "5.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

预期的产出为:

代码语言:javascript
复制
{
  "Empresa": "13530",
  "Rotas": {
    "Codigo": "4740523719166",
    "Entregas": [
      {
        "Cliente": {
          "Codigo": "4083082796",
          "Nome": "EMPRESA TESTE",
          "Tipo": 1
        },
        "Pedidos": [
          {
            "Codigo": "5327053",
            "NotasFiscais": [
              {
                "Numero": "216550",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "23702",
                      "Nome": "PRODUTO TESTE 2"
                    },
                    "Quantidade": "5.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              },
              {
                "Numero": "216558",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "2694",
                      "Nome": "PRODUTO TESTE02"
                    },
                    "Quantidade": "6.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "Cliente": {
          "Codigo": "5589685412",
          "Nome": "EMPRESA TESTE02",
          "Tipo": 1
        },
        "Pedidos": [
          {
            "Codigo": "5327060",
            "NotasFiscais": [
              {
                "Numero": "316270",
                "TipoOperacao": "SAIDA",
                "NotaFiscalItens": [
                  {
                    "Produto": {
                      "Codigo": "219",
                      "Nome": "PRODUTO EXEMPLO"
                    },
                    "Quantidade": "5.0000",
                    "TipoProduto": {
                      "Descricao": "Diversos",
                      "Codigo": "1"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

我无法合并有关“Cliente”的信息,因为它在'Entregas‘数组的两个对象中重复。我需要合并发生,以便引用‘客户’的信息只出现一次。有人能帮我吗?先谢谢你。

EN

回答 1

Stack Overflow用户

发布于 2022-02-26 21:55:55

通过下面这样的构造函数跳转到NotasFiscais开始计算

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "Rotas": {
        "Entregas": {
          "*": {
            "Pedidos": {
              "*": {
                "NotasFiscais": {
                  "*": {
                    "@": "&4[&5].&2"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
]

然后通过添加适当的&@符号替换在shift转换中进行开发,然后在最后一步中使用索引值选择列表Entregas的第一个元素,例如

代码语言:javascript
复制
[
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "Rotas": {
        "*": "&1.&",
        "Entregas": {
          "*": {
            "*": "&3.&2[&1].&",
            "Pedidos": {
              "*": {
                "Codigo": {
                  "@": "&6.&5[0].&3[&4].&1"
                },
                "NotasFiscais": {
                  "*": {
                    "@": "&7.&6[0].&4[&5].&2"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "&",
      "Rotas": {
        "*": "&1.&",
        "Entregas": {
          "0": "&2.&1[]"
        }
      }
    }
  }
]

http://jolt-demo.appspot.com/站点上的演示

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

https://stackoverflow.com/questions/71270112

复制
相关文章

相似问题

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