У меня возникла проблема с вызовом API JSON с использованием Powershell, который возвращает многоуровневый вложенный массив. Использование стандартного convertfrom-json & convertto-json не дает мне полных результатов. Я просто получаю ...Развернуть многоуровневые таблицы вложенных хэшей Powershell из JSON api call
Я провел много исследований по этому вопросу и нашел следующее: link на стеке для расширения вложенных хеш-таблиц, и это касается лучшего формата, который я получил. Для справки, я пытаюсь вставить записи сотрудников в SQL Server. У меня есть функция JSON для этого, и вам нужно получить ответ JSON в расширенном формате. Есть некоторые аспекты безопасности, которые не позволят мне публиковать фактические данные, поэтому я пытаюсь представить пример некоторых проблем, которые у меня есть. Имейте в виду, что ответ за 1 запись сотрудника из сотен в целом, а в 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
и
$workers = json1.workers | foreach-object {$_}
Данные, возвращаемые возвращается, как это:
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}}
мне это нужно, чтобы вернуться со всеми столбцов на левой стороне, utiliz «AssociateOID» в качестве ключевого идентификатора для индивидуума. Я уже получил ответ JSON вернуться полностью расширен, используя этот формат, но он не работает с импортом в SQL Server или выглядит очень хорошо, как ответ Google Почтальон:
$json1 = Invoke-webRequest -Uri $Workeruri -Certificate $cert -Headers $WorkerHeader | format-list -property *
Вопрос о полном расширении '' рабочих' в JSON? –
В итоге я все расширил, используя PScustomObject. Однако теперь я не могу получить новую строку на одного сотрудника. Я обрабатываю настраиваемый объект для автоматической сортировки таблицы, но каждый столбец выглядит как {xxxxx, xxxx, xxx} и не выполняет новую строку. – Jumpman