Форматирование вложенных ответов Invoke-WebRequest - PullRequest
0 голосов
/ 13 июля 2020

Публикация впервые, поэтому извиняюсь, если я пропускаю здесь этикет. Я начал экспериментировать с WebRequests в Powershell, чтобы сопоставить некоторые полезные части JSON (см. Ниже) ниже с конечной целью связать его с GUI.

Я запускаю следующее

$response = Invoke-WebRequest 'https://directory.spineservices.nhs.uk/ORD/2-0-0/organisations/P81085'|convertFrom-Json |select -expand Organisation

Полный ответ возвращается как JSON как таковой:

{
    "Organisation": {
        "Name": "YORK BRIDGE SURGERY",
        "Date": [
            {
                "Type": "Operational",
                "Start": "1974-04-01",
                "End": "2018-05-02"
            },
            {
                "Type": "Legal",
                "Start": "1974-04-01",
                "End": "2018-04-30"
            }
        ],
        "OrgId": {
            "root": "2.16.840.1.113883.2.1.3.2.4.18.48",
            "assigningAuthorityName": "HSCIC",
            "extension": "P81085"
        },
        "Status": "Inactive",
        "LastChangeDate": "2018-05-04",
        "orgRecordClass": "RC1",
        "GeoLoc": {
            "Location": {
                "AddrLn1": "5 JAMES STREET",
                "Town": "MORECAMBE",
                "County": "LANCASHIRE",
                "PostCode": "LA4 5TE",
                "Country": "ENGLAND"
            }

Что отображается в PS как:

Date           : {@{Type=Operational; Start=1974-04-01; End=2018-05-02}, @{Type=Legal; Start=1974-04-01; End=2018-04-30}}
OrgId          : @{root=2.16.840.1.113883.2.1.3.2.4.18.48; assigningAuthorityName=HSCIC; extension=P81085}
Status         : Inactive
LastChangeDate : 2018-05-04
orgRecordClass : RC1
GeoLoc         : @{Location=}
Contacts       : @{Contact=System.Object[]}
Roles          : @{Role=System.Object[]}
Rels           : @{Rel=System.Object[]}

Я могу назначать переменные и вызывать отдельные разделы, установив следующее:

$name = $response.Name
$date = $response.date

Какой результат:

YORK BRIDGE SURGERY
Type        Start      End       
----        -----      ---       
Operational 1974-04-01 2018-05-02
Legal       1974-04-01 2018-04-30

Однако, если я установил:

$address = $response.geoloc

Я получаю следующее

Location-------- @{AddrLn1=5 JAMES STREET; Town=MORECAMBE; County=LANCASHIRE; PostCode=LA4 5TE; Country=ENGLAND}

Может ли кто-нибудь предложить способ, которым я мог бы вернуть только отдельные разделы данных о местоположении? В идеале я хотел бы иметь возможность установить $ town = $ response.town и вернуть в этом примере просто «Morecambe», однако мне явно не хватает чего-то очевидного

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

РЕШЕНО

Для тех, у кого такая же проблема может возникнуть в будущем:

$addrLn1 = $response.geoloc.location.addrLn1
$addrLn2 = $response.geoloc.location.addrLn2
$town = $response.geoloc.location.town

Разрешил мне установить нужные мне переменные, которые вернули индивидуальные данные, которые мне нужны.

Оглядываясь назад, очевидно, но я все еще начинаю, надеюсь, однажды это поможет кому-то другому

0 голосов
/ 13 июля 2020
$response.Organisation.geoloc.Location
$response.Organisation.geoloc.Location.County

и так далее

...