簡體   English   中英

將 JSON 數組轉換為 Powershell 中的單個 JSON 對象

[英]Convert JSON array to single JSON object in Powershell

我正在嘗試將 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構建一組新$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
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM