Bird
Raised Fist0
PowerShellscripting~10 mins

JSON operations (ConvertFrom-Json, ConvertTo-Json) in PowerShell - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - JSON operations (ConvertFrom-Json, ConvertTo-Json)
Start with JSON string
↓
Use ConvertFrom-Json
↓
Get PowerShell object
↓
Modify or use object
↓
Use ConvertTo-Json
↓
Get JSON string output
↓
End
This flow shows how a JSON string is turned into a PowerShell object, used or changed, then turned back into JSON text.
Execution Sample
PowerShell
$json = '{"name":"Anna","age":30}'
$obj = $json | ConvertFrom-Json
$obj.age = 31
$newJson = $obj | ConvertTo-Json
$newJson
This code converts a JSON string to an object, changes the age, then converts it back to JSON.
Execution Table
StepActionInputOutputNotes
1Assign JSON string to $json{"name":"Anna","age":30}{"name":"Anna","age":30}Raw JSON text stored
2ConvertFrom-Json to object$jsonObject with properties name='Anna', age=30JSON parsed into PowerShell object
3Modify object property$obj.age = 31Object with age=31Age property updated
4ConvertTo-Json from object$obj{ "name": "Anna", "age": 31 }Object converted back to JSON string
5Output $newJson$newJson{ "name": "Anna", "age": 31 }Final JSON string output
💡 Process ends after outputting the updated JSON string.
Variable Tracker
VariableStartAfter Step 2After Step 3After Step 4
$json{"name":"Anna","age":30}{"name":"Anna","age":30}{"name":"Anna","age":30}{"name":"Anna","age":30}
$objnullObject{name='Anna', age=30}Object{name='Anna', age=31}Object{name='Anna', age=31}
$newJsonnullnullnull{ "name": "Anna", "age": 31 }
Key Moments - 2 Insights
Why do we need ConvertFrom-Json before changing properties?
Because JSON text is just a string. ConvertFrom-Json turns it into an object we can change, as shown in step 2 and 3.
What happens if we skip ConvertTo-Json at the end?
Without ConvertTo-Json, we keep the object, not JSON text. Step 4 shows converting back to JSON string for output or saving.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of $obj.age after step 3?
A30
B31
Cnull
DUndefined
💡 Hint
Check the 'Output' column in row for step 3 in execution_table.
At which step does the JSON string become a PowerShell object?
AStep 1
BStep 4
CStep 2
DStep 5
💡 Hint
Look for 'ConvertFrom-Json' action in execution_table.
If we change $obj.name to 'Bob' after step 3, what will $newJson contain after step 4?
A{"name":"Bob","age":31}
B{"name":"Bob","age":30}
C{"name":"Anna","age":31}
D{"name":"Anna","age":30}
💡 Hint
Think about the object properties before ConvertTo-Json in step 4.
Concept Snapshot
ConvertFrom-Json: turns JSON text into a PowerShell object.
Modify object properties directly.
ConvertTo-Json: turns object back into JSON text.
Use these to read, change, and save JSON data in scripts.
Full Transcript
This lesson shows how to work with JSON in PowerShell. First, you start with a JSON string. Using ConvertFrom-Json, you turn that string into a PowerShell object. This object lets you access and change data easily, like changing the age property. After changes, use ConvertTo-Json to turn the object back into a JSON string. This string can be saved or sent somewhere. The execution table traces each step: storing the JSON string, converting it to an object, changing the object, converting back to JSON, and outputting the result. Variables like $json, $obj, and $newJson change as the script runs. Key moments explain why conversion is needed before and after changes. The quiz checks understanding of when and how these conversions happen and what the final JSON looks like after changes.

Practice

(1/5)
1. What does the PowerShell cmdlet ConvertFrom-Json do?
easy
A. It converts JSON text into PowerShell objects.
B. It converts PowerShell objects into JSON text.
C. It formats JSON text for better readability.
D. It validates JSON syntax without conversion.

Solution

  1. Step 1: Understand the purpose of ConvertFrom-Json

    This cmdlet takes JSON formatted text and turns it into PowerShell objects you can work with.
  2. Step 2: Differentiate from ConvertTo-Json

    ConvertTo-Json does the opposite by turning objects into JSON text, so it is not the correct answer here.
  3. Final Answer:

    It converts JSON text into PowerShell objects. -> Option A
  4. Quick Check:

    ConvertFrom-Json = JSON text to objects [OK]
Hint: ConvertFrom-Json = JSON text to objects [OK]
Common Mistakes:
  • Confusing ConvertFrom-Json with ConvertTo-Json
  • Thinking it only formats JSON without conversion
  • Assuming it validates JSON syntax only
2. Which of the following is the correct syntax to convert a JSON string stored in variable $jsonText into a PowerShell object?
easy
A. ConvertTo-Json $jsonText
B. $jsonText | ConvertTo-Json
C. ConvertFrom-Json $jsonText -Compress
D. $jsonText | ConvertFrom-Json

Solution

  1. Step 1: Identify the correct cmdlet for JSON to object conversion

    ConvertFrom-Json converts JSON text to PowerShell objects, so it is the right cmdlet.
  2. Step 2: Check the syntax for using pipeline

    Using $jsonText | ConvertFrom-Json is the correct way to pipe the JSON string into the cmdlet.
  3. Final Answer:

    $jsonText | ConvertFrom-Json -> Option D
  4. Quick Check:

    Pipe JSON string to ConvertFrom-Json [OK]
Hint: Pipe JSON string to ConvertFrom-Json for conversion [OK]
Common Mistakes:
  • Using ConvertTo-Json instead of ConvertFrom-Json
  • Trying to call ConvertFrom-Json without pipeline incorrectly
  • Confusing parameter order or cmdlet usage
3. What is the output of this PowerShell code?
$json = '{"name":"Alice","age":30}'
$obj = $json | ConvertFrom-Json
$obj.age
medium
A. Error: Cannot convert string to object
B. 30
C. age
D. "30"

Solution

  1. Step 1: Convert JSON string to object

    The JSON string contains a property "age" with value 30 (number). ConvertFrom-Json creates an object with property age = 30.
  2. Step 2: Access the age property

    Accessing $obj.age returns the numeric value 30, not a string or error.
  3. Final Answer:

    30 -> Option B
  4. Quick Check:

    Property age value = 30 [OK]
Hint: ConvertFrom-Json creates objects; access properties directly [OK]
Common Mistakes:
  • Expecting age as a string with quotes
  • Thinking the output is the property name 'age'
  • Assuming conversion error occurs
4. What is the output of this PowerShell code?
$json = '{"name":"Bob","age":25}'
$obj = ConvertFrom-Json $json
Write-Output $obj.name
medium
A. Bob
B. "Bob"
C. name
D. Error: Cannot convert string to object

Solution

  1. Step 1: Convert JSON string to object

    The JSON string contains a property "name" with value Bob (string). ConvertFrom-Json creates an object with property name = Bob.
  2. Step 2: Access the name property

    Accessing $obj.name returns the string value Bob, not a quoted string or error.
  3. Final Answer:

    Bob -> Option A
  4. Quick Check:

    Property name value = Bob [OK]
Hint: ConvertFrom-Json creates objects; access properties directly [OK]
Common Mistakes:
  • Expecting output as a string with quotes
  • Thinking the output is the property name 'name'
  • Assuming positional argument causes conversion error
5. You have a PowerShell object:
$person = @{ Name = "Eve"; Age = 28; Skills = @("PowerShell", "JSON") }

Which command correctly converts this object to JSON text with indentation for readability?
hard
A. $person | ConvertTo-Json -Depth 2 -Compress
B. $person | ConvertTo-Json -Depth 2 -Pretty
C. $person | ConvertTo-Json -Depth 2
D. ConvertTo-Json $person -Depth 2 -Compress

Solution

  1. Step 1: Understand ConvertTo-Json parameters

    ConvertTo-Json converts objects to JSON text. The -Depth parameter controls how deep nested objects are converted.
  2. Step 2: Identify correct parameter for indentation

    By default, ConvertTo-Json outputs indented JSON. The -Compress parameter removes whitespace, so it is not desired. There is no -Pretty parameter.
  3. Final Answer:

    $person | ConvertTo-Json -Depth 2 -> Option C
  4. Quick Check:

    Default output is indented JSON [OK]
Hint: Use ConvertTo-Json with -Depth; default output is indented [OK]
Common Mistakes:
  • Using -Compress removes indentation
  • Using non-existent -Pretty parameter
  • Not setting -Depth for nested objects
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard