用于jQuery DataTables的PowerShell DB2 DataTable行到JSON文件



我对DB2 Database运行多个查询,并将信息存储在ArrayList中。但是,返回的信息是DataTable,因为我在哪里获得了查询DB2 Database的代码。

我正在做的是查询时间表上的结果,将信息推送到JSON文件,jQuery数据表将读取该文件来填充结果。转换为JSON Object是可行的,但它缺少"data"的父节点,因此jQuery可以看到结果。

这是产生的数据,至少是一个样本:

[ {
"A":  "1",
"B":  "2",
"C":  "3",
"D":  "4"
} ]

但是,jQuery DataTables期望数据作为加载数据的父节点。所以,我想做的是让json看起来像这样:

{
"data": [
{
"A":  "1",
"B":  "2",
"C":  "3",
"D":  "4"
}
]
}

这是我用来从DB2:获得结果的函数

Function Get-DB2Results { 
param (
$db2
)
$script:dbcmd.CommandText = $db2
$rdr = $script:dbcmd.ExecuteReader()
$dt = [System.Data.DataTable]::New()
$dt.Load($rdr)
Return $dt
}

我将这些信息存储在ArrayList中。我相信,由于对象的混合,当我导出到JSON:时,数据没有正确转换

Connect-DB2
foreach ($query in $SQLArray) { 
$jsonFileTotals.add(((Get-DB2Results -db2 $query) | Select-Object * -ExcludeProperty ItemArray, Table, RowError, RowState, HasErrors))
$jsonFileTotals.add($blankLine)
}
Disconnect-DB2
@{ data = @( $jsonFileTotals.toArray() ) } | ConvertTo-Json | out-file \SRV01DatatotalsArray.txt -force

我相信,因为有一个ArrayList&DataTable对象混合,JSON文件不正确:

"@{A=1; B=8; C=10; D=9}"
],
{
"A":  "1",
"B":  "2",
"C":  "3",
"D":  "4",

我是不是把问题复杂化了?我感谢你的帮助。

这应该可以正常工作。你能不能也检查一下我的评论,并给我一个如何在powershell中连接到db2的提示?

$MyArrayList = New-Object -TypeName "System.Collections.ArrayList"
$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(5)
$MyArrayList.Add(4)
$MyArrayList | ConvertTo-Json
$myObject = [PSCustomObject]@{
data = $MyArrayList
}
$myObject | ConvertTo-Json
#or even lighter
$myHashTable= @{}
$myHashTable.data = $MyArrayList
$myHashTable | ConvertTo-Json

最新更新