[英]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.