我有一个非常大的员工 JSON 响应,我正在尝试将其转换为表格式、导出为 CSV 并最终插入到 SQL Server 中。我能够确定如何从 json 文件中获取所有变量,但是现在我将所有值插入到每列的一行中,而不是为每个员工插入一个新行。 另外,当我导出到 CSV 时,该值会变成 System.Object[]。
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | convertfrom-json
$table = [PSCustomObject] @{
associateOID = $json1.workers.associateOID
workerID = $json1.workers.workerID.idValue
GivenName = $json1.workers.person.legalName.givenName
MiddleName = $json1.workers.person.legalName.middleName
FamilyName1 = $json.workers.person.legalName.familyName1
} |format-table -autosize
$table | export-csv $filepath -NoTypeInformation
这些列只是一个小样本,实际上可能有 100 列。然而,我的回复是这样的:
associateOID workerID givenName
------------ -------- ---------
{1,2,3,4,5...} {a,b,c,d,e...} {Lebron James, Micheal Jordan, Steph Curry...}
我希望它回来:
associateOID workerID givenName
------------ -------- ---------
1 A Lebron James
2 B Micheal Jordan
3 C Steph Curry
此外,导出到 CSV 时,响应具有正确的列,但所有列都返回:System.Object[]。 另外,我的包含整数和日期的字段不返回数据。我该如何解决这个问题?
我尝试过使用排序对象、组对象、for-each 循环。没有任何效果。
你可以这样尝试:
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | ConvertFrom-Json
$table = $json1 | ForEach-Object {
[PSCustomObject] @{
associateOID = $_.workers.associateOID
workerID = $_.workers.workerID.idValue
GivenName = $_.workers.person.legalName.givenName
MiddleName = $_.workers.person.legalName.middleName
FamilyName1 = $_.workers.person.legalName.familyName1
}
}
$table | Export-Csv $filepath -NoTypeInformation
$table | Format-Table -AutoSize
您的代码片段获取每列的所有值并将它们存储在单个对象中,而不是迭代从 JSON 转换的对象集合。
此外,一旦使用
Format-Table
,数据就会被格式化以供显示,但不再在管道中使用。这就是为什么我将屏幕显示和 CSV 导出分开的原因。
@sodawillow 几乎已经知道了,假设 json1.workers 是包含您的工作人员的对象列表。
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | ConvertFrom-Json
$table = $json1.workers | ForEach-Object {
[PSCustomObject] @{
associateOID = $_.associateOID
workerID = $_.workerID.idValue
GivenName = $_.person.legalName.givenName
MiddleName = $_.person.legalName.middleName
FamilyName1 = $_.person.legalName.familyName1
}
}
$table | Export-Csv $filepath -NoTypeInformation
$table | Format-Table -AutoSize