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 |
Входные данные
Строку JSON можно передать в ConvertFrom-Json
.
Выходные данные
PSCustomObject
Примечания
Командлет ConvertFrom-Json
реализован с помощью класса JavaScriptSerializer.
Тип PSObject поддерживает порядок свойств, представленных в строке JSON. Хотя пары "ключ-значение" добавляются в хеш-таблицу в порядке, представленном в строке JSON, объекты хеш-таблицы не поддерживают этот порядок.
Связанные ссылки
PowerShell