Поделиться через


ConvertFrom-Json

Преобразует строку в формате JSON в пользовательский объект.

Синтаксис

ConvertFrom-Json
                [-InputObject] <String>
                [<CommonParameters>]

Описание

Командлет ConvertFrom-Json преобразует строку в формате JavaScript Object Notation (JSON) в настраиваемый объект PSObject или Hashtable, который имеет свойство для каждого поля в строке JSON. JSON обычно используется веб-сайтами для предоставления текстового представления объектов. Командлет добавляет свойства в новый объект, обрабатывая каждую строку строки JSON.

Стандарт JSON позволяет дублировать имена ключей, которые запрещены в PSObject и в хэш-таблицах . Например, если строка JSON содержит повторяющиеся ключи, этот командлет использует только последний ключ. См. другие примеры ниже.

Чтобы создать строку JSON из любого объекта, используйте командлет ConvertTo-Json.

Этот командлет был представлен в PowerShell 3.0.

Заметка

В Windows PowerShell 5.1 ConvertFrom-Json возвращает ошибку при возникновении комментариев JSON. В PowerShell 6 и более поздних версиях командлет поддерживает JSON с комментариями. Командлет не записывает комментарии JSON в выходные данные объектов. Дополнительные сведения см. в разделе комментариев JSON статьи about_Comments.

Примеры

Пример 1. Преобразование объекта DateTime в объект JSON

Эта команда использует командлеты ConvertTo-Json и ConvertFrom-Json для преобразования объекта DateTime из командлета Get-Date в объект JSON, а затем в PSCustomObject.

Get-Date | Select-Object -Property * | ConvertTo-Json | ConvertFrom-Json

DisplayHint : 2
DateTime    : Friday, January 13, 2012 8:06:31 PM
Date        : 1/13/2012 8:00:00 AM
Day         : 13
DayOfWeek   : 5
DayOfYear   : 13
Hour        : 20
Kind        : 2
Millisecond : 400
Minute      : 6
Month       : 1
Second      : 31
Ticks       : 634620819914009002
TimeOfDay   : @{Ticks=723914009002; Days=0; Hours=20; Milliseconds=400; Minutes=6; Seconds=31; TotalDays=0.83786343634490734; TotalHours=20.108722472277776; TotalMilliseconds=72391400.900200009; TotalMinutes=1206.5233483366667;TotalSeconds=72391.4009002}
Year        : 2012

В примере используется командлет Select-Object для получения всех свойств объекта DateTime. Он использует командлет ConvertTo-Json для преобразования объекта DateTime в строку, отформатированную как объект JSON, и командлет ConvertFrom-Json для преобразования строки в формат JSON в объект PSCustomObject.

Пример 2. Получение строк JSON из веб-службы и их преобразование в объекты PowerShell

Эта команда использует командлет Invoke-WebRequest для получения строк JSON из веб-службы, а затем использует командлет ConvertFrom-Json для преобразования содержимого JSON в объекты, которые можно управлять в PowerShell.

# Ensures that Invoke-WebRequest uses TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$j = Invoke-WebRequest 'https://api.github.com/repos/PowerShell/PowerShell/issues' | ConvertFrom-Json

Вы также можете использовать командлет Invoke-RestMethod, который автоматически преобразует содержимое JSON в объекты.

Пример 3. Преобразование строки JSON в пользовательский объект

В этом примере показано, как использовать командлет ConvertFrom-Json для преобразования JSON-файла в пользовательский объект PowerShell.

Get-Content -Raw JsonFile.json | ConvertFrom-Json

Команда использует командлет Get-Content для получения строк в JSON-файле. Параметр raw возвращает весь файл в виде одного объекта JSON. Затем он использует оператор конвейера для отправки делимитированной строки в командлет ConvertFrom-Json, который преобразует её в пользовательский объект.

Параметры

-InputObject

Указывает строки JSON для преобразования в объекты JSON. Введите переменную, содержащую строку, или введите команду или выражение, которое получает строку. Можно также передать строку в ConvertFrom-Json.

Параметр InputObject является обязательным, но его значение может быть пустой строкой. Если входной объект является пустой строкой, ConvertFrom-Json не создает выходные данные. Значение входного объекта не может быть $null.

Тип:String
Position:0
Default value:None
Обязательно:True
Принять входные данные конвейера:True
Принять подстановочные знаки:False

Входные данные

String

Строку JSON можно передать в ConvertFrom-Json.

Выходные данные

PSCustomObject

Примечания

Командлет ConvertFrom-Json реализован с помощью класса JavaScriptSerializer.

Тип PSObject поддерживает порядок свойств, представленных в строке JSON. Хотя пары "ключ-значение" добавляются в хеш-таблицу в порядке, представленном в строке JSON, объекты хеш-таблицы не поддерживают этот порядок.