Bird
Raised Fist0
Spring Bootframework~20 mins

@RequestBody for JSON input in Spring Boot - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Master of @RequestBody JSON Input
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What is the output when sending JSON to a Spring Boot controller with @RequestBody?
Consider this Spring Boot controller method:
@PostMapping("/user")
public String addUser(@RequestBody User user) {
    return user.getName();
}

If you send this JSON:
{"name":"Alice","age":30}

What will be the response?
Spring Boot
@PostMapping("/user")
public String addUser(@RequestBody User user) {
    return user.getName();
}
Anull
B"{\"name\":\"Alice\",\"age\":30}"
CHTTP 400 Bad Request error
D"Alice"
Attempts:
2 left
💡 Hint
Think about how @RequestBody converts JSON into a Java object.
📝 Syntax
intermediate
2:00remaining
Which method signature correctly uses @RequestBody to accept JSON input?
You want to write a Spring Boot controller method that accepts JSON data for a Product object. Which of these method signatures is correct?
Apublic ResponseEntity<String> addProduct(Product product)
Bpublic ResponseEntity<String> addProduct(@PathVariable Product product)
Cpublic ResponseEntity<String> addProduct(@RequestBody Product product)
Dpublic ResponseEntity<String> addProduct(@RequestParam Product product)
Attempts:
2 left
💡 Hint
Remember that @RequestBody is needed to convert JSON in the request body to a Java object.
🔧 Debug
advanced
2:00remaining
Why does this Spring Boot controller method fail to parse JSON with @RequestBody?
Given this method:
@PostMapping("/order")
public String createOrder(@RequestBody String order) {
    return order;
}

When sending JSON, the client gets a 415 Unsupported Media Type error. What is the likely cause?
Spring Boot
@PostMapping("/order")
public String createOrder(@RequestBody String order) {
    return order;
}
AThe client did not set Content-Type to application/json
BThe method parameter should be an Order object, not String
CThe method must use @RequestParam instead of @RequestBody
DSpring Boot does not support JSON input by default
Attempts:
2 left
💡 Hint
@RequestBody String does not support application/json; use a POJO instead.
❓ state_output
advanced
2:00remaining
What is the value of the User object after JSON input with missing fields?
Given this User class:
public class User {
  private String name;
  private int age;
  // getters and setters
}

And this controller method:
@PostMapping("/user")
public String addUser(@RequestBody User user) {
    return user.getName() + "," + user.getAge();
}

If the JSON sent is:
{"name":"Bob"}

What will be the returned string?
Spring Boot
@PostMapping("/user")
public String addUser(@RequestBody User user) {
    return user.getName() + "," + user.getAge();
}
A"Bob,0"
BHTTP 400 Bad Request error
C"null,0"
D"Bob,null"
Attempts:
2 left
💡 Hint
What is the default value for an int field in Java if not set?
🧠 Conceptual
expert
2:00remaining
Which statement about @RequestBody and JSON input is true?
Select the correct statement about how Spring Boot handles JSON input with @RequestBody.
A@RequestBody automatically validates JSON fields and throws errors if any field is missing
B@RequestBody requires a default constructor and setters or a constructor with parameters to map JSON fields
C@RequestBody can only map JSON arrays, not JSON objects
D@RequestBody ignores Content-Type headers and accepts any media type
Attempts:
2 left
💡 Hint
Think about how Jackson or other JSON mappers create Java objects.

Practice

(1/5)
1. What is the main purpose of the @RequestBody annotation in a Spring Boot controller?
easy
A. To validate form data submitted via GET requests
B. To send JSON data back in the HTTP response
C. To map URL query parameters to method arguments
D. To automatically convert JSON from the HTTP request body into a Java object

Solution

  1. Step 1: Understand the role of @RequestBody

    @RequestBody tells Spring Boot to take JSON data sent in the HTTP request body and convert it into a Java object automatically.
  2. Step 2: Differentiate from other annotations

    It does not handle response data (that's @ResponseBody), nor does it map query parameters or validate GET form data.
  3. Final Answer:

    To automatically convert JSON from the HTTP request body into a Java object -> Option D
  4. Quick Check:

    @RequestBody = JSON to Java object [OK]
Hint: Remember: @RequestBody reads JSON input from request body [OK]
Common Mistakes:
  • Confusing @RequestBody with @ResponseBody
  • Thinking it maps URL parameters
  • Assuming it validates data automatically
2. Which of the following method signatures correctly uses @RequestBody to accept a JSON object representing a User in a Spring Boot controller?
easy
A. public ResponseEntity<String> addUser(@RequestBody User user)
B. public ResponseEntity<String> addUser(@RequestParam User user)
C. public ResponseEntity<String> addUser(@PathVariable User user)
D. public ResponseEntity<String> addUser(User user)

Solution

  1. Step 1: Identify correct annotation for JSON body

    @RequestBody is required to tell Spring Boot to convert JSON in the request body to a User object.
  2. Step 2: Check other annotations

    @RequestParam reads query parameters, @PathVariable reads URL path segments, and no annotation means no automatic JSON conversion.
  3. Final Answer:

    public ResponseEntity<String> addUser(@RequestBody User user) -> Option A
  4. Quick Check:

    JSON input needs @RequestBody [OK]
Hint: Use @RequestBody for JSON input, not @RequestParam or @PathVariable [OK]
Common Mistakes:
  • Using @RequestParam instead of @RequestBody
  • Forgetting @RequestBody annotation
  • Confusing @PathVariable with JSON input
3. Given the following controller method:
  @PostMapping("/add")
  public String addUser(@RequestBody User user) {
    return "Hello " + user.getName();
  }

And the JSON sent in the request body is:
{"name": "Alice"}

What will be the response?
medium
A. HTTP 400 Bad Request
B. "Hello null"
C. "Hello Alice"
D. Compilation error

Solution

  1. Step 1: Understand JSON to Java object mapping

    The JSON {"name": "Alice"} maps to a User object with name set to "Alice".
  2. Step 2: Check method return value

    The method returns "Hello " + user.getName(), so it returns "Hello Alice".
  3. Final Answer:

    "Hello Alice" -> Option C
  4. Quick Check:

    JSON name maps to user.getName() = "Hello Alice" [OK]
Hint: JSON keys map to object fields, so output uses those values [OK]
Common Mistakes:
  • Assuming user.getName() is null
  • Expecting HTTP error without malformed JSON
  • Confusing request body with query parameters
4. Consider this controller method:
@PostMapping("/user")
public String createUser(@RequestBody User user) {
  return user.getEmail();
}

If the client sends an empty request body, what will happen?
medium
A. Spring Boot throws an HTTP 400 Bad Request error
B. The method returns null
C. The method returns an empty string
D. Compilation error due to missing @RequestBody

Solution

  1. Step 1: Check behavior with empty JSON body

    When @RequestBody expects JSON but receives empty body, Spring Boot cannot create the User object.
  2. Step 2: Understand Spring Boot error handling

    Spring Boot responds with HTTP 400 Bad Request for missing or malformed JSON input.
  3. Final Answer:

    Spring Boot throws an HTTP 400 Bad Request error -> Option A
  4. Quick Check:

    Empty JSON body causes HTTP 400 error [OK]
Hint: Empty JSON body with @RequestBody causes HTTP 400 error [OK]
Common Mistakes:
  • Assuming method returns null or empty string
  • Thinking compilation error occurs
  • Ignoring HTTP error on missing JSON
5. You want to create a Spring Boot REST endpoint that accepts a JSON array of User objects in the request body and returns the count of users received. Which method signature correctly uses @RequestBody to achieve this?
hard
A. public int countUsers(@RequestBody User user)
B. public int countUsers(@RequestBody List<User> users)
C. public int countUsers(@RequestParam List<User> users)
D. public int countUsers(@PathVariable List<User> users)

Solution

  1. Step 1: Identify correct parameter type for JSON array

    To accept a JSON array of User objects, the method parameter should be a List<User> annotated with @RequestBody.
  2. Step 2: Exclude incorrect annotations and types

    @RequestParam and @PathVariable do not handle JSON body. Single User parameter cannot accept an array.
  3. Final Answer:

    public int countUsers(@RequestBody List<User> users) -> Option B
  4. Quick Check:

    JSON array maps to List<User> with @RequestBody [OK]
Hint: Use List<User> with @RequestBody for JSON arrays [OK]
Common Mistakes:
  • Using single User instead of List<User>
  • Using @RequestParam or @PathVariable for JSON body
  • Forgetting @RequestBody annotation
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