从JSON api调用展开多级Powershell嵌套哈希表

从JSON api调用展开多级Powershell嵌套哈希表,json,api,powershell,nested,hashtable,Json,Api,Powershell,Nested,Hashtable,我在使用Powershell进行JSON API调用时遇到问题,该调用返回多级嵌套数组。使用标准convertfrom-json&convertto-json并不能给出完整的结果。我只是得到一个 我对此做了大量的研究,并发现了以下用于扩展嵌套哈希表的堆栈,这是我得到的最好的格式。作为参考,我正在尝试将员工记录插入SQL Server。我有一个JSON函数用于执行此操作,需要以扩展格式获取JSON响应。有一些安全方面,这不允许我发布实际的细节,所以我试图提供一个我遇到的一些问题的例子。请记住,响应

我在使用Powershell进行JSON API调用时遇到问题,该调用返回多级嵌套数组。使用标准convertfrom-json&convertto-json并不能给出完整的结果。我只是得到一个

我对此做了大量的研究,并发现了以下用于扩展嵌套哈希表的堆栈,这是我得到的最好的格式。作为参考,我正在尝试将员工记录插入SQL Server。我有一个JSON函数用于执行此操作,需要以扩展格式获取JSON响应。有一些安全方面,这不允许我发布实际的细节,所以我试图提供一个我遇到的一些问题的例子。请记住,响应是针对数百条记录中的一条记录,在SQL中,每个员工一行对应一个表

$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 *