Powershell Переименование динамического ключа c в файл JSON - PullRequest
0 голосов
/ 28 апреля 2020

Я использую метод RestMethod в Powershell для вызова API, который возвращает следующий JSON ответ:

{
    "count": 2,
    "results": [
        {
            "key": "roles",
            "id": "1180325"
        },
        {
            "key": "roles",
            "id": "1182095"
        }
    ],
    "roles": {
        "1180325": {
            "name": "L1",
            "deleted_at": null,
            "created_at": "2020-03-26T03:47:19-07:00",
            "updated_at": "2020-03-26T03:47:19-07:00",
            "id": "1180325"
        },
        "1182095": {
            "name": "L2",
            "deleted_at": null,
            "created_at": "2020-03-30T01:09:56-07:00",
            "updated_at": "2020-03-30T01:09:56-07:00",
            "id": "1182095"
        }
    },
    "meta": {
        "count": 2,
        "page_count": 1,
        "page_number": 1,
        "page_size": 20
    }
}

Список объектов с динамическим именем c вызывает у меня проблемы с объединения, которые я пытаюсь сделать, поэтому я хотел бы преобразовать «роли» в массив и пропустить первый список объектов, чтобы результат выглядел следующим образом

{
    "count": 2,
    "results": [
        {
            "key": "roles",
            "id": "1180325"
        },
        {
            "key": "roles",
            "id": "1182095"
        }
    ],
    "roles": [
        {
            "name": "L1",
            "deleted_at": null,
            "created_at": "2020-03-26T03:47:19-07:00",
            "updated_at": "2020-03-26T03:47:19-07:00",
            "id": "1180325"
        },
        {
            "name": "L2",
            "deleted_at": null,
            "created_at": "2020-03-30T01:09:56-07:00",
            "updated_at": "2020-03-30T01:09:56-07:00",
            "id": "1182095"
        }
    ],
    "meta": {
        "count": 2,
        "page_count": 1,
        "page_number": 1,
        "page_size": 20
    }
}

Кто-нибудь может помочь?

1 Ответ

1 голос
/ 28 апреля 2020

Используйте скрытый набор psobject, чтобы получить доступ к свойствам roles свойства:

# Json -> PSObject
$object = $json |ConvertFrom-Json

# Re-assign list of property values to `roles`
$object.roles = $object.roles.psobject.Properties.Value

# PSObject -> Json
$object |ConvertTo-Json

Если вы хотите пропустить первый элемент в коллекции, используйте Select-Object -Skip:

$object.roles = $object.roles.psobject.Properties.Value |Select -Skip 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...