Расшифровка Base64 только в части файла JSON с помощью Powershell - PullRequest
0 голосов
/ 30 января 2019

Я делаю вызов API для одного из приложений моего поставщика через powershell.Ответ от API - это файл JSON.Только часть файла JSON кодируется в BASE64.Есть ли способ прочитать файл JSON с powershell и декодировать раздел, который закодирован в BASE64?Пример файла JSON:

Я могу вручную скопировать «метаданные» из файла json и декодировать их с помощью powershell, используя следующий код:

[System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("BASE64DATA"))

, однако, когда я пытаюсь передатьв файле JSON вместо скопированного текста я получаю сообщение об ошибке.

{
results: [
      {
        "id": "<Plain Text Data>",
        "meta": "<BASE64 Encoded Data>",
        "info": "<Plain Text Data>"
      },
     {  
       "id": "<Plain Text Data>",
       "meta": "<BASE64 Encoded Data>",
       "info": "<Plain Text Data>"
    }
    ]
}

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Поскольку вы имеете дело с RESTful API, который возвращает JSON, я рекомендую использовать для извлечения данных командлет Invoke-RestMethod, он автоматически проанализирует JSON для вас в объект.

Ниже приведен примеро том, как это будет сделано.

$json = Invoke-RestMethod -Uri 'https://something'
$json.results | ForEach-Object { $_.meta = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($_.meta)) }
$json.results

Он подключится, извлечет данные JSON и преобразует их в объект в первой команде

Вторая команда преобразует кодировки base64 вобычный текст.

Третья команда выведет данные, чтобы вы убедились, что это работает, как ожидалось.

0 голосов
/ 30 января 2019

Вы можете использовать json в качестве объекта, затем преобразовать его, декодировать и преобразовать обратно в json.

$Json = Get-Content -Path c:\JsonFilePath.json | ConvertFrom-Json
$NewJson = $Json.Results | Foreach-Object -Process {
            $Converted = [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String($_.meta))
            $_.meta = $Converted
}
$NewJson | ConvertTo-Json
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...