从JSON api调用展开多级Powershell嵌套哈希表
我在使用Powershell进行JSON API调用时遇到问题,该调用返回多级嵌套数组。使用标准convertfrom-json&convertto-json并不能给出完整的结果。我只是得到一个 我对此做了大量的研究,并发现了以下用于扩展嵌套哈希表的堆栈,这是我得到的最好的格式。作为参考,我正在尝试将员工记录插入SQL Server。我有一个JSON函数用于执行此操作,需要以扩展格式获取JSON响应。有一些安全方面,这不允许我发布实际的细节,所以我试图提供一个我遇到的一些问题的例子。请记住,响应是针对数百条记录中的一条记录,在SQL中,每个员工一行对应一个表从JSON api调用展开多级Powershell嵌套哈希表,json,api,powershell,nested,hashtable,Json,Api,Powershell,Nested,Hashtable,我在使用Powershell进行JSON API调用时遇到问题,该调用返回多级嵌套数组。使用标准convertfrom-json&convertto-json并不能给出完整的结果。我只是得到一个 我对此做了大量的研究,并发现了以下用于扩展嵌套哈希表的堆栈,这是我得到的最好的格式。作为参考,我正在尝试将员工记录插入SQL Server。我有一个JSON函数用于执行此操作,需要以扩展格式获取JSON响应。有一些安全方面,这不允许我发布实际的细节,所以我试图提供一个我遇到的一些问题的例子。请记住,响应
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | convertfrom-json
$workers = $json1.workers | select -property *
$workers | format-table Name, @{n='Value'; e={
if ($_.Value -is [Hashtable]) {
$ht = $_.Value
$a = $ht.keys | sort | % { '{0}={1}' -f $_, $ht[$_] }
'{{{0}}}' -f ($a -join ', ')
} else {
$_.Value
}
}}
$workers
我也尝试过:
$workers | convertto-json
及
返回的数据如下所示:
associateOID : XXXXXXXXXXXXXX
workerID : @{idValue=XXXXXXX}
person : @{governmentIDs=System.Object[]; legalName=; birthDate=0000-00-00; legalAddress=; genderCode=; maritalStatusCode=; socialInsurancePrograms=System.Object[]; tobaccoUserIndicator=False; raceCode=; customFieldGroup=}
workerDates : @{originalHireDate=2015-03-09; terminationDate=2016-03-18}
workerStatus : @{statusCode=}
businessCommunication : @{emails=System.object[]}
workAssignments : {@{itemID=xxxxxx; occupationalclassification=System.Object[]; etc}}
我需要它在左侧返回所有列,使用“AssociateOID”作为个人的关键标识符。我以前使用这种格式得到了完全扩展的JSON响应,但它不适用于导入SQL Server,也不像Google Postman响应:
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | format-list -property *
你的意思是你想得到一个JSON文件,所有的对象/属性都被扩展,对吗?使用
converttojson
的-Depth
选项正确编写Json文件。-Depth
选项的默认值为2
$workers |转换为Json-深度100
根据JSON文件指定适当的深度。您的意思是希望获得一个所有对象/属性都已展开的JSON文件,对吗?使用
converttojson
的-Depth
选项正确编写Json文件。-Depth
选项的默认值为2
$workers |转换为Json-深度100
根据您的JSON文件指定适当的深度。是关于将
$workers
完全扩展为JSON的问题吗?我最终使用PScustomObject对所有内容进行了扩展。但是,现在我无法为每个员工获得一个新行。我通过管道将自定义对象设置为表格自动大小的格式,但每一列看起来像{xxxxx,xxxx,xxx},并且不做新行。是否要将$workers
完全扩展为JSON?我最终使用PScustomObject对所有内容进行了扩展。但是,现在我无法为每个员工获得一个新行。我通过管道将自定义对象设置为自动调整表大小的格式,但每一列看起来像{xxxxx,xxxxx,xxx},并且不做新行。
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | format-list -property *