我正在尝试将 JSON 数组转换为单个 JSON 对象。 下面是输出截图
我正在使用下面的 powershell 脚本
$getdb_Conn=Invoke-Sqlcmd -ServerInstance $ServerName -Database 'master' -Username $UserName -Password $Password -Query $getdb
$deadlockDB=$getdb_Conn.Database_Name
$deadlockSP=$getdb_Conn.SP_Name
$deadlockTable_Name=$getdb_Conn.Table_Name
$deadlockTIMESTAMP=$getdb_Conn.TIMESTAMP
$Obj = [PSCustomObject]@{
Database = $deadlockDB
SP = $deadlockSP
Table = $deadlockTable_Name
TIMESTAMP = $deadlockTIMESTAMP
}
Write-Output ( $obj | ConvertTo-Json)
请有人帮助我,了解如何获得所需的输出。我不希望 JSON 位于数组中。
最佳答案
问题是您有一个包含属性的非数组对象,而这些属性都包含值数组。为了获得所需的结果,您需要一个对象数组,每个对象都包含一组属性值。您可以选择在构建 $Obj
时在源头执行此操作,或构建一组要发送到 ConvertTo-Json
的新对象。
使用当前的 $Obj
构建一组新的对象:
for ($i = 0; $i -lt $obj.TIMESTAMP.Count; $i++) {
[pscustomobject]@{
Database = $obj.Database[$i]
SP = $obj.SP[$i]
Table = $obj.Table[$i]
TIMESTAMP = $obj.TIMESTAMP[$i]
} | ConvertTo-Json
}
从源数据构建对象:
$getdb_Conn=Invoke-Sqlcmd -ServerInstance $ServerName -Database 'master' -Username $UserName -Password $Password -Query $getdb
foreach ($conn in $getdb_Conn) {
[PSCustomObject]@{
Database = $conn.Database_Name
SP = $conn.SP_Name
Table = $conn.Table_Name
TIMESTAMP = $conn.TIMESTAMP
} | ConvertTo-Json
}
关于arrays - 在 Powershell 中将 JSON 数组转换为单个 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63582683/