Invoke-WebRequest 嵌套响应格式化

Invoke-WebRequest nested response formatting

第一次发帖,如有遗漏请见谅。我已经开始在 Powershell 中使用 WebRequests 来整理下面 JSON(见下文)的一些有用部分,最终目的是将其链接到 GUI。

我是运行以下

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

完整的回复 return 编辑为 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

哪个return:

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}

有没有人能建议一种方法,我可以 return 仅定位数据的各个部分? 理想情况下,我希望能够设置 $town = $response.town 并让它 return 在这个例子中只是 "Morecambe" 但是我显然遗漏了一些明显的东西

$response.Organisation.geoloc.Location
$response.Organisation.geoloc.Location.County

等等

已解决

对于将来可能遇到相同问题的任何人:

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

允许我设置我需要的变量,返回我需要的个人数据。

回想起来,很明显,但我仍处于起步阶段,希望有一天这会对其他人有所帮助