【问题标题】:Convert JSON array to single JSON object in Powershell在 Powershell 中将 JSON 数组转换为单个 JSON 对象
【发布时间】:2020-12-14 08:54:51
【问题描述】:

我正在尝试将 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 在数组中。

【问题讨论】:

    标签: arrays json azure powershell


    【解决方案1】:

    问题是您有一个包含属性的非数组对象,这些属性都包含值数组。要获得所需的结果,您需要一个对象数组,每个对象都包含一组属性值。您可以在构建 $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
    }
    

    【讨论】:

      猜你喜欢
      • 2016-12-24
      • 2013-08-28
      • 1970-01-01
      • 1970-01-01
      • 2012-07-21
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多