Публикация впервые, поэтому извиняюсь, если я пропускаю здесь этикет. Я начал экспериментировать с 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», однако мне явно не хватает чего-то очевидного