Bird
Raised Fist0
Postmantesting~15 mins

JSON body in Postman - Build an Automation Script

Choose your learning style10 modes available
Verify POST request with JSON body to create a new user
Preconditions (3)
Step 1: Open Postman and create a new POST request
Step 2: Set the request URL to https://api.example.com/users
Step 3: In the Body tab, select raw and choose JSON format
Step 4: Enter the following JSON body: {"name": "John Doe", "email": "john.doe@example.com", "age": 30}
Step 5: Send the request
Step 6: Observe the response status code and body
✅ Expected Result: Response status code is 201 Created and response body contains the created user details with name 'John Doe', email 'john.doe@example.com', and age 30
Automation Requirements - Postman/Newman
Assertions Needed:
Verify response status code is 201
Verify response JSON body contains 'name' with value 'John Doe'
Verify response JSON body contains 'email' with value 'john.doe@example.com'
Verify response JSON body contains 'age' with value 30
Best Practices:
Use environment variables for endpoint URLs
Use JSON schema validation for response body
Use descriptive test names
Use pre-request scripts if needed for setup
Avoid hardcoding sensitive data
Automated Solution
Postman
pm.test('Status code is 201', function () {
    pm.response.to.have.status(201);
});

pm.test('Response has correct user details', function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql('John Doe');
    pm.expect(jsonData.email).to.eql('john.doe@example.com');
    pm.expect(jsonData.age).to.eql(30);
});

The first test checks that the response status code is 201, which means the user was created successfully.

The second test parses the JSON response body and verifies that the 'name', 'email', and 'age' fields match the expected values sent in the request.

This ensures the API correctly processed the JSON body and returned the expected data.

Common Mistakes - 4 Pitfalls
Not setting Content-Type header to application/json
{'mistake': 'Using incorrect JSON syntax in the body', 'why_bad': 'Invalid JSON causes the request to fail or the server to return an error.', 'correct_approach': "Validate JSON syntax before sending; use Postman's raw JSON editor."}
Hardcoding URLs and data without using variables
Not verifying response status code
Bonus Challenge

Now add data-driven testing with 3 different user JSON bodies to create multiple users

Show Hint

Practice

(1/5)
1. What is the correct way to represent a JSON body with a user's name and age in Postman?
easy
A. {"name": "Alice", "age": 30}
B. {name: Alice, age: 30}
C. {'name': 'Alice', 'age': 30}
D. {name = "Alice", age = 30}

Solution

  1. Step 1: Identify JSON syntax rules

    JSON keys and string values must be in double quotes. Numbers do not need quotes.
  2. Step 2: Check each option for correct JSON format

    {"name": "Alice", "age": 30} uses double quotes correctly around keys and string values. The other options use incorrect quotes or syntax.
  3. Final Answer:

    {"name": "Alice", "age": 30} -> Option A
  4. Quick Check:

    JSON keys and strings use double quotes = A [OK]
Hint: Always use double quotes for keys and string values in JSON [OK]
Common Mistakes:
  • Using single quotes instead of double quotes
  • Omitting quotes around keys
  • Using equal signs instead of colons
2. Which of the following is a valid JSON body to send a list of colors in Postman?
easy
A. {"colors": ("red", "green", "blue")}
B. {colors: [red, green, blue]}
C. {"colors": "red", "green", "blue"}
D. {"colors": ["red", "green", "blue"]}

Solution

  1. Step 1: Understand JSON array syntax

    Arrays in JSON are enclosed in square brackets with comma-separated values, strings in double quotes.
  2. Step 2: Validate each option's array format

    {"colors": ["red", "green", "blue"]} correctly uses square brackets and double quotes. The other options are invalid: one uses parentheses, another is missing array brackets, and one lacks quotes around strings and keys.
  3. Final Answer:

    {"colors": ["red", "green", "blue"]} -> Option D
  4. Quick Check:

    Arrays use square brackets and double quotes = B [OK]
Hint: Use square brackets for arrays and double quotes for strings [OK]
Common Mistakes:
  • Using parentheses instead of square brackets
  • Missing quotes around string values
  • Omitting brackets for arrays
3. Given this JSON body sent in Postman:
{
  "user": {
    "id": 101,
    "active": true
  },
  "roles": ["admin", "editor"]
}

What is the value of user.active?
medium
A. null
B. true
C. false
D. "true"

Solution

  1. Step 1: Locate the key user.active in the JSON

    Inside the "user" object, the key "active" has the value true without quotes, meaning boolean true.
  2. Step 2: Understand JSON boolean values

    Boolean true is a literal, not a string. So the value is the boolean true, not the string "true".
  3. Final Answer:

    true -> Option B
  4. Quick Check:

    Boolean true is unquoted true = D [OK]
Hint: Booleans in JSON are unquoted true or false [OK]
Common Mistakes:
  • Confusing boolean true with string "true"
  • Assuming missing keys have null values
  • Misreading nested object structure
4. You wrote this JSON body in Postman:
{
  "product": "Book",
  "price": 12.99,
  "inStock": yes
}

What is the error in this JSON body?
medium
A. "price" should be a string in quotes
B. "inStock" value should be true or false without quotes
C. "inStock" value 'yes' is invalid, should be true or false
D. Missing comma after "price" value

Solution

  1. Step 1: Check the value of "inStock" key

    The value 'yes' is not a valid JSON boolean or string because it lacks quotes.
  2. Step 2: Identify correct boolean values in JSON

    JSON booleans are true or false without quotes. Strings must be in double quotes. 'yes' without quotes is invalid.
  3. Final Answer:

    "inStock" value 'yes' is invalid, should be true or false -> Option C
  4. Quick Check:

    Boolean values must be true/false unquoted = C [OK]
Hint: Use true/false for booleans, not yes/no or strings [OK]
Common Mistakes:
  • Using yes/no instead of true/false
  • Not quoting string values
  • Confusing number and string types
5. You want to send this JSON body in Postman to update a user's profile:
{
  "user": {
    "name": "Bob",
    "email": "bob@example.com",
    "preferences": {
      "notifications": false,
      "themes": ["dark", "blue"]
    }
  }
}

Which of the following changes will correctly add a new preference "language" set to "en" inside "preferences"?
hard
A. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } }
B. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "language": "en" } }
C. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences.language": "en" } }
D. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences": { "language": "en" } } }

Solution

  1. Step 1: Understand nested object update in JSON

    To add a new key inside "preferences", it must be inside the existing "preferences" object.
  2. Step 2: Check each option's structure

    { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } } adds "language": "en" inside "preferences" correctly. { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "language": "en" } } adds "language" outside "preferences". { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences.language": "en" } } uses invalid key "preferences.language". { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"] }, "preferences": { "language": "en" } } } overwrites "preferences" object, losing existing keys.
  3. Final Answer:

    { "user": { "name": "Bob", "email": "bob@example.com", "preferences": { "notifications": false, "themes": ["dark", "blue"], "language": "en" } } } -> Option A
  4. Quick Check:

    Nested keys must be inside existing objects = A [OK]
Hint: Add new keys inside existing nested objects, not outside [OK]
Common Mistakes:
  • Adding keys outside nested objects
  • Using dot notation as key name
  • Overwriting entire nested objects accidentally
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