【问题标题】:Merge two arrays and overwrite values | Dataweave合并两个数组并覆盖值 |数据编织
【发布时间】:2022-11-02 18:13:56
【问题描述】:

我有将全局数组与另一个自定义数组合并的情况,或者如果名称相同,请使用自定义值。

全球的:

{
  "connections": [
   {
    "name": "Test SFTP",
    "type": "SFTP",
    "user": "sftpuser",
    "password": "password",
    "server": "127.0.0.1",
    "port": 22,
   },
   {
    "name": "Test FTP",
    "type": "FTP",
    "user": "ftpuser",
    "password": "password",
    "server": "127.0.0.1",
    "port": 21,
   }
 ]
}

风俗:

{
  "connections": [
   {
    "name": "Test SFTP",
    "user": "sftpuser1",
    "password": "password1",
    "server": "127.0.0.2",
   },

   {
    "name": "Test FTPS",
    "type": "FTPS",
    "user": "ftpsuser",
    "password": "password",
    "server": "127.0.0.1",
    "port": 990,
   }
 ]
}

预期的:

{
  "connections": [
   {
    "name": "Test SFTP",
    "type": "SFTP",
    "user": "sftpuser1",
    "password": "password1",
    "server": "127.0.0.2",
    "port": 22,
   },
   {
    "name": "Test FTP",
    "type": "FTP",
    "user": "ftpuser",
    "password": "password",
    "server": "127.0.0.1",
    "port": 21,
   },
   {
    "name": "Test FTPS",
    "type": "FTPS",
    "user": "ftpsuser",
    "password": "password",
    "server": "127.0.0.1",
    "port": 990,
   }
 ]
}

全局将始终具有所有字段,但自定义可以具有名称+只有一个字段来覆盖全局。

稍后我将验证 json 是否正常,但现在我只需要合并和覆盖。

谢谢, 伊万

【问题讨论】:

    标签: arrays dataweave


    【解决方案1】:

    下面的脚本会帮助你。

    %dw 2.0
    output application/json
    import * from dw::core::Arrays
    
    var global = {
      "connections": [
       {
        "name": "Test SFTP",
        "type": "SFTP",
        "user": "sftpuser",
        "password": "password",
        "server": "127.0.0.1",
        "port": 22,
       },
       {
        "name": "Test FTP",
        "type": "FTP",
        "user": "ftpuser",
        "password": "password",
        "server": "127.0.0.1",
        "port": 21,
       }
     ]
    }
    var custom  = {
      "connections": [
       {
        "name": "Test SFTP",
        "user": "sftpuser1",
        "password": "password1",
        "server": "127.0.0.2",
       },
    
       {
        "name": "Test FTPS",
        "type": "FTPS",
        "user": "ftpsuser",
        "password": "password",
        "server": "127.0.0.1",
        "port": 990,
       }
     ]
    }
    ---
    ((outerJoin(global.connections, custom.connections, (g) -> g.name, (c) -> c.name) )map  ( (($.r default {}) ++ ($.l default {})))) map ($ distinctBy $$ )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-09
      • 2021-07-01
      • 2018-01-18
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      相关资源
      最近更新 更多