我正在对一个DB2 Database
运行多个查询,并将信息存储在ArrayList
中。但是,由于我从哪里获得了查询DB2 Database
的代码,所以返回的信息是DataTable
。
我正在做的是按计划查询结果,将信息推送到jQuery
DataTables将读取以填充结果的JSON
文件。转换为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 \\SRV01\Data\totalsArray.txt -force
我相信是因为有一个混合的ArrayList
和DataTable
对象,一个不正确的JSON
文件:
"@{A=1; B=8; C=10; D=9}"
],
{
"A": "1",
"B": "2",
"C": "3",
"D": "4",
我是不是把问题复杂化了?我很感谢你的帮助。
发布于 2021-04-15 05:24:03
这应该可以很好地工作。你可以检查我的评论,并给我一个提示如何在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
https://stackoverflow.com/questions/67095227
复制相似问题