JSON has become one of the most important data formats in modern automation. When you are working with REST APIs, configuration files, or cloud services like Azure and Microsoft Graph, JSON appears everywhere. Fortunately, PowerShell has excellent built-in support for working with JSON, making it easy to convert between structured PowerShell objects and JSON data.
One of the reasons JSON works so well with PowerShell is that PowerShell itself is object-oriented. Instead of working with plain text, PowerShell works with objects that contain properties and values. JSON follows a very similar structure, which allows PowerShell to convert JSON data directly into usable objects.
What JSON Looks Like
A typical JSON structure looks like this:
{ "Firstname": "Ahmed", "Lastname": "Uzejnovic", "Department": "IT", "Active": true}
This structure contains keys and values, which map perfectly to PowerShell object properties.
Converting JSON into PowerShell Objects
PowerShell provides the cmdlet ConvertFrom-Json to transform JSON data into a PowerShell object.
$json = '{ "Firstname": "Ahmed", "Lastname": "Uzejnovic", "Department": "IT", "Active": true}'$user = $json | ConvertFrom-Json$user.Firstname$user.Department
After the conversion, the JSON data behaves like a regular PowerShell object. Properties can be accessed directly using dot notation, which makes the data extremely easy to work with.
Converting PowerShell Objects to JSON
PowerShell can also convert objects back into JSON using the ConvertTo-Json cmdlet. This is especially useful when sending data to APIs.
$user = [PSCustomObject]@{ Firstname = "Ahmed" Lastname = "Uzejnovic" Department = "IT" Active = $true}$json = $user | ConvertTo-Json$json
This creates a JSON representation of the PowerShell object, which can then be used for API calls or stored in configuration files.
Working with Nested JSON Structures
JSON structures can also contain nested objects. PowerShell handles these structures very well.
$json = '{ "User": { "Firstname": "Ahmed", "Lastname": "Uzejnovic" }, "Role": "Administrator"}'$data = $json | ConvertFrom-Json$data.User.Firstname
Even deeply nested structures remain easy to access using PowerShell’s object notation.
Why JSON Is So Useful in Automation
JSON is extremely powerful in automation scenarios because it allows complex data to be transferred, stored, and processed in a structured way. Many modern services rely heavily on JSON, including:
- Microsoft Graph API
- Azure REST APIs
- Configuration files
- Web services
- Automation platforms
PowerShell’s ability to seamlessly convert JSON into objects makes it possible to interact with these services using familiar PowerShell techniques.
A Practical Example with an API
When calling a REST API, the response is often returned in JSON format. PowerShell can convert this response automatically.
$response = Invoke-RestMethod -Uri "https://api.github.com/repos/PowerShell/PowerShell"$response.full_name$response.stargazers_count
Because the JSON response is automatically converted into a PowerShell object, the properties can be accessed directly.
Summary
JSON is one of the most important data formats in modern automation. PowerShell makes working with JSON extremely convenient by allowing seamless conversion between JSON and PowerShell objects.
This capability makes it easy to interact with APIs, build configuration-driven scripts, and exchange structured data between systems.