我有一个包含两个“列”'User id'
和'email'
示例的 CSV:
User id,email
1234-1234-1234,[email protected]
321-1235-44432,[email protected]
322136231345,[email protected]
JSON 如下所示:
[{
"externalId": "100000",
"watchers": ["[email protected]", "[email protected]", "[email protected]"]
},
{
"externalId": "100002",
"watchers": ["[email protected]", "[email protected]"]
}
]
我想要做的是相应地用 CSV 中的“用户 ID”替换 JSON 中的电子邮件地址。到目前为止,我有低效的 foreach in foreach 代码,但它只替换了观察者数组中的第一个电子邮件。
$usersCSV = Import-Csv 'users.csv'
$watchersJSON = Get-Content -Path "watchers.json" -raw |ConvertFrom-Json
foreach ($watchersJSONdata in $watchersJSON) {
foreach ($usersCSVdata in $usersCSV){
if ($watchersJSONdata.watchers -eq $usersCSVdata.email) {
$watchersJSONdata.watchers = $usersCSVdata.'User id'
}
}
} $watchersJSON |ConvertTo-Json | out-file "watchers-with-ID.json"
结果是:
[{
"externalId": "100000",
"watchers": ["1234-1234-1234"]
}
]
我仍在努力,但如果能提供一点帮助就太好了。
我不会介意使用单行 jq 的完全不同的方法,但我完全不了解 jq。
最简单、最有效的方法是
Group-Object -AsHashtable
利用字典类型进行快速查找。有关更多详细信息,请参阅about_Hash_Tables 。