Преобразование JSON в печатные издания Powershell Object Странный вывод - PullRequest
0 голосов
/ 11 октября 2018

на данный момент я борюсь с API.Я пытаюсь прочитать информацию из API и работать в PowerShell с этой информацией.API - это JSON.Проблема в том, что у него всегда есть эта двойная информация "@ {label = id; value =", и после этого некоторые значения равны NULL, но в них должна быть информация.Заранее спасибо.

Надеюсь, это понятно :)

## Parameter ##
$clientID = "ABCD"
$clientSecret = "EVGH"
$urlAPI = "https://api.url.de/..."

try {
    $result = Invoke-RestMethod -Uri ("https://api.url.de/v1/auth?client_id=" + $clientID + "&client_secret=" + $clientSecret) -Method POST  -ErrorAction stop
}
catch {Write-Host "Webrequest broke"}

$token = $result.data
$token = $token.token

$header = @{Authorization = 'Bearer ' + $token}
try {
    $result = Invoke-RestMethod -Method 'Get' -URI $urlAPI  -Headers $header -ErrorAction stop 
}
catch {Write-Host "Webrequest 2 broke"}

$result.data.attributes

Получаемая информация должна выглядеть следующим образом:

{"success":true,"data":[{
    {"type":"Employee","attributes":
        {"id":
            {"label":"id","value":999999},
        "first_name":
            {"label":"First name","value":"John"},
        "last_name":
            {"label":"Last name","value":"Doe"},
        "position":
            {"label":"Position","value":"Employee"},
        "hire_date":
            {"label":"Hire date","value":"2001-01-01T00:00:00+02:00"},
        "subcompany":
            {"label":"Subcompany","value":
                {"type":"Subcompany","attributes":
                    {"id":1234,"name":"Company"}}},
        "department":
            {"label":"Department","value":
                {"type":"Department","attributes":
                    {"id":23456,"name":"Department-Superfun"}}}
}}}]}

Возвращение из $ result.data.attributes выглядит так:

id               : @{label=id; value=999999}
first_name       : @{label=First name; value=John}
last_name        : @{label=Last name; value=Doe}
position         : @{label=Position; value=Employee}
hire_date        : @{label=Hire date; value=2001-01-01T00:00:00+01:00}
subcompany       : @{label=Subcompany; value=}
department       : @{label=Department; value=}

1 Ответ

0 голосов
/ 11 октября 2018

Значение, которое вы видите, действительно правильное.Если вы посмотрите на структуру данных, атрибуты - это объект, который имеет свойства id, first_name, last_name и т. Д. Значения этих свойств сами являются объектами, которые имеют свои собственные свойства.Например, значение attribute.id является объектом, имеющим метку и значение свойства.

В случае подкомпании у него есть свойство с именем value, значением которого является объект.PowerShell не отображает содержимое вложенных объектов по умолчанию, но если вы попытаетесь получить доступ к свойствам с помощью PowerShell, они будут существовать.То же самое касается отдела.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...