我是 JQ 的新手。我需要根據另外 2 個檔案制作一個 json 檔案。我整天都在使用它并在這里堆疊。非常需要這個。
這是檔案 1
{
"name": "foo",
"key": "1",
"id": "x"
}
{
"name": "bar",
"key": "2",
"id": "x"
}
{
"name": "baz",
"key": "3",
"id": "y"
}
檔案 2
{
"name": "a",
"key": "1"
}
{
"name": "b",
"key": "1"
}
{
"name": "c",
"key": "2"
}
{
"name": "d",
"key": "2"
}
{
"name": "e",
"key": "3"
}
預期結果:
{
"x": {
"foo": [
"a",
"b"
],
"bar": [
"c",
"d"
]
},
"y": {
"baz": [
"e"
]
}
}
我可以用 python 腳本來做,但我需要用 jq。
提前致謝。
uj5u.com熱心網友回復:
使用reduce第一個檔案的專案($i)依次建立使用結果物件setpath從專案的欄位和值在輔助詞典檔案中匹配的地圖($d)。
jq -s --slurpfile d file2 '
reduce .[] as $i ({}; setpath(
[$i.id, $i.name];
[$d[] | select(.key == $i.key).name]
))
' file1
uj5u.com熱心網友回復:
為了效率,下面的方案首先基于file2構造一個“字典”;此外,它這樣做而不必“啜飲”它。
< file2 jq -nc --slurpfile file1 file1 '
(reduce inputs as {$name, $key} ({};
.[$key] = [$name])) as $dict
| reduce $file1[] as {$name, $key, $id} ({};
.[$id] = [ {($name): $dict[$key]} ] )
'
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/343657.html
上一篇:需要構建一個API串列arry
下一篇:Swift可解碼JSON處理資料
