arrays - 在 Powershell 中将 JSON 数组转换为单个 JSON 对象

标签 arrays json azure powershell

我正在尝试将 JSON 数组转换为单个 JSON 对象。 下面是输出截图 enter image description here

我希望输出为 enter image description here

我正在使用下面的 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/

相关文章:

PHP 数组条件不起作用

azure - 如何调试在 shell 中运行的 Azure Python 函数以及在 Intellij IDE 中调试

sql-server - 无法连接到 Azure VM 上的 SQL Server

c# - 如何将 float 组从 C# 复制到 C dll

java - 在 Java 中是否可以有一个包含数组和基元的数组?

javascript - 在多个数组中旋转

javascript - 将 JSON 从 Django 转换为 JavaScript 数组并循环填充 Mention.js 中的 'users' 参数

php - 图表饼图不读取json文件数据吗?

java - 启用 proguard 时出现 Jackson 错误(缩小)

azure - 如何使用 dotnet core 作为 Docker 中的 Azure 函数来运行 FFProbe?