簡體   English   中英

如果鍵/值對滿足 object 中的條件,JQ 將鍵值對移動(或復制)到另一個 object

[英]JQ move(or copy) key value pairs to another object if a key/value pair meets condition in that object

我有兩個文件,它們非常大,所以我將提供一些相關數據:

從文件:

  [
    {
      "id": 7212486534162308,
      "rowNumber": 283,
      "cells": [
        {
          "Column": "SS name",
          "columnId": 7408953102493572,
          "displayValue": "Dd Kk",
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 4409864198875012,
            "rowId": 5483738575202180,
            "columnId": 6482434207311748,
            "sheetName": "INFORMATION - J-1000579"
          },
          "value": "Dd Kk"
        },
        {
          "Column": "link",
          "columnId": 5822630258337668,
          "displayValue": "Dd Kk link",
          "hyperlink": {
            "url": "https://app.test.com/fvffvs/dfesfrfr"
          },
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 316850291664772,
            "rowId": 6836472364722052,
            "columnId": 6189414452881284,
            "sheetName": "PROJECT INTAKE SHEET"
          },
          "value": "Dd Kk"
        }
      ]
    },
    {
      "id": 7046413570598788,
      "rowNumber": 284,
      "cells": [
        {
          "Column": "SS name",
          "columnId": 7408953102493572,
          "displayValue": "Macquarie Education Programs",
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 8275059887368068,
            "rowId": 8307181892986756,
            "columnId": 687741640959876,
            "sheetName": "INFORMATION - J-1000532.01"
          },
          "value": "Macquarie Education Programs"
        },
        {
          "Column": "link",
          "columnId": 5822630258337668,
          "displayValue": "Macquarie Education Programs Building - J-10005",
          "hyperlink": {
            "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
          },
          "linkInFromCell": {
            "status": "OK",
            "sheetId": 316850291664772,
            "rowId": 4795289157298052,
            "columnId": 6189414452881284,
            "sheetName": "PROJECT INTAKE SHEET"
          },
          "value": "Macquarie Education Programs - J-10005"
        }
      ]
    }
  ]

到文件:

[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

在 to_file 中,在每個包含“columnId”的 object 中:5206337428711300 我需要添加來自 from_file“columnId”的所有鍵值對(“column”和“columnId”除外):5822630258337668 包含 object,其中單元格的數組columnId": 7408953102493572 包含 object 具有與 to_file 的 "columnId": 5460306864433028 包含對象 "displayValue" 值相同的 "displayValue" 值。

期望的結果如下:

[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052, 
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"

      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

謝謝

下面的@PMF 答案有效,但如果 to_file 中有無法在 from 文件中找到的項目,則會失敗。

這個工程演示

[
    {
    "id": 7660296628791172,
    "rowNumber": 484,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "CSNSW",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4453675823982468,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "CSNSW - J-1000739.01",
        "hyperlink": {
          "url": "https://app.test.com/beffvfdcwe/ergrsvsrfv"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4655985963493252,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW - J-1000739.01"
      }
    ]
  },
  {
    "id": 7212486534162308,
    "rowNumber": 283,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Dd Kk",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 4409864198875012,
          "rowId": 5483738575202180,
          "columnId": 6482434207311748,
          "sheetName": "INFORMATION - J-1000579"
        },
        "value": "Dd Kk"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"
      }
    ]
  },
  {
    "id": 7046413570598788,
    "rowNumber": 284,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Macquarie Education Programs",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 8275059887368068,
          "rowId": 8307181892986756,
          "columnId": 687741640959876,
          "sheetName": "INFORMATION - J-1000532.01"
        },
        "value": "Macquarie Education Programs"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      }
    ]
  }
]
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

這不起作用演示

[
    {
    "id": 7660296628791172,
    "rowNumber": 484,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "CSNSW",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4453675823982468,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "CSNSW - J-1000739.01",
        "hyperlink": {
          "url": "https://app.test.com/beffvfdcwe/ergrsvsrfv"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 3495076589528964,
          "rowId": 4655985963493252,
          "columnId": 6210919910926212,
          "sheetName": "INFORMATION - J-1000739.01"
        },
        "value": "CSNSW - J-1000739.01"
      }
    ]
  },
  {
    "id": 7212486534162308,
    "rowNumber": 283,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Dd Kk",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 4409864198875012,
          "rowId": 5483738575202180,
          "columnId": 6482434207311748,
          "sheetName": "INFORMATION - J-1000579"
        },
        "value": "Dd Kk"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Dd Kk"
      }
    ]
  },
  {
    "id": 7046413570598788,
    "rowNumber": 284,
    "cells": [
      {
        "Column": "SS name",
        "columnId": 7408953102493572,
        "displayValue": "Macquarie Education Programs",
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 8275059887368068,
          "rowId": 8307181892986756,
          "columnId": 687741640959876,
          "sheetName": "INFORMATION - J-1000532.01"
        },
        "value": "Macquarie Education Programs"
      },
      {
        "Column": "link",
        "columnId": 5822630258337668,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      }
    ]
  }
]
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": ""
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  },
  {
    "id": 7276986526263172,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300
      },
      {
        "columnId": 5460306864433028,
        "value": "Dubbo",
        "displayValue": "Dubbo"
      }      
    ]
  }
]

謝謝!!

您可以在匹配的displayValue上構建一個INDEX ,然后通過更新+=正確的JOIN in to.json與 from.json 中相應的 object 來加入from.json

修復:在連接更新中使用try可以防止匹配不完整時失敗。

jq '
  [
    JOIN(
      INDEX(.[].cells; .[] | select(.columnId == 7408953102493572).displayValue);
      input[];
      .cells[] | select(.columnId == 5460306864433028).displayValue;
      (.[0].cells[] | select(.columnId == 5206337428711300)) += try
        (.[1][] | select(.columnId == 5822630258337668) | del(.Column, .columnId))
    )[0]
  ]
' from.json to.json
[
  {
    "id": 977325251291012,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "value": "Dd Kk",
        "displayValue": "Dd Kk link",
        "hyperlink": {
          "url": "https://app.test.com/fvffvs/dfesfrfr"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 6836472364722052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        }
      },
      {
        "columnId": 5460306864433028,
        "value": "Dd Kk",
        "displayValue": "Dd Kk"
      }
    ]
  },
  {
    "id": 5480924878661508,
    "cells": [
      {
        "columnId": 2040705442965380,
        "value": true
      },
      {
        "columnId": 5206337428711300,
        "displayValue": "Macquarie Education Programs Building - J-10005",
        "hyperlink": {
          "url": "https://app.test.com/jnjnnlkm/fvfbsfbfgvdsfe"
        },
        "linkInFromCell": {
          "status": "OK",
          "sheetId": 316850291664772,
          "rowId": 4795289157298052,
          "columnId": 6189414452881284,
          "sheetName": "PROJECT INTAKE SHEET"
        },
        "value": "Macquarie Education Programs - J-10005"
      },
      {
        "columnId": 5460306864433028,
        "value": "Macquarie Education Programs",
        "displayValue": "Macquarie Education Programs"
      }
    ]
  }
]

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM