Boolean Field Becomes null in Spring Boot DTO? Here’s Why (And How to Fix It)

Published: (January 2, 2026 at 02:57 PM EST)
3 min read
Source: Dev.to

Source: Dev.to

Cover image for Boolean Field Becomes null in Spring Boot DTO? Here’s Why (And How to Fix It)

If you’re building REST APIs using Spring Boot, you may encounter a strange and frustrating issue:

The request JSON clearly sends a boolean value (true / false), but inside the DTO the value becomes null.
No exception, no warning, no stack trace.

This is not a bug in Spring Boot — it’s a Jackson + Java Bean naming trap that frequently appears in real‑world applications.

In this article you’ll learn

  • Why boolean values become null in Spring Boot DTOs
  • How Jackson maps JSON properties to Java fields
  • Why @JsonProperty fixes the issue
  • The recommended best practice to avoid this forever

The Problem: Boolean Value Is null in DTO

Request payload

{
  "isActive": true
}

DTO

public class UserRequest {

    private Boolean isActive;

    public Boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }
}

Controller

@PostMapping("/user")
public void createUser(@RequestBody UserRequest request) {
    System.out.println(request.getIsActive());
}

Actual output

null

Why This Happens (Jackson + Java Bean Rules)

Spring Boot uses Jackson to convert JSON into Java objects. Jackson follows Java Bean naming conventions, which depend heavily on getter and setter names.

How Jackson interprets boolean fields

For a field declared as:

private Boolean isActive;

Jackson expects one of the following method patterns:

public Boolean isActive()   // for primitive boolean
// or
public Boolean getActive()

But the DTO defines:

public Boolean getIsActive()

The mismatch

  • JSON property: isActive
  • Java property Jackson infers: active

Because of this mismatch, Jackson fails to bind the value, resulting in null.

Solution 1: Use @JsonProperty (Quick Fix)

Explicitly tell Jackson how to map the JSON property.

import com.fasterxml.jackson.annotation.JsonProperty;

public class UserRequest {

    @JsonProperty("isActive")
    private Boolean isActive;

    public Boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }
}

Result: JSON maps correctly, DTO receives true / false, no more null.

Instead of fixing the mapping, fix the design. Avoid starting boolean field names with is.

Preferred DTO design

public class UserRequest {

    private Boolean active;

    public Boolean getActive() {
        return active;
    }

    public void setActive(Boolean active) {
        this.active = active;
    }
}

Why this is better

  • Fully Java Bean compliant
  • No Jackson annotations required
  • Cleaner, more readable DTOs
  • Fewer bugs in large codebases

boolean vs Boolean in Spring Boot DTOs

TypeDefault ValueNullable
booleanfalseNo
BooleannullYes

When to use what

  • Use boolean when the field is mandatory.
  • Use Boolean when the field is optional or tri‑state.

Common Interview Question

Q: Why does Spring Boot map boolean JSON values to null?
A: Because Jackson follows Java Bean naming conventions. Boolean fields prefixed with is can cause property name mismatches unless getters, setters, or @JsonProperty are defined correctly.

Key Takeaways

  • Boolean fields starting with is can silently break Jackson mapping.
  • Jackson relies on getter/setter naming, not field names.
  • @JsonProperty fixes the issue explicitly.
  • Best practice: avoid the is prefix in DTO fields.
  • Always check DTO design before debugging controllers.

Final Advice

If your JSON looks correct but your DTO value is null:

Check the getter and setter naming first.

This small detail can save hours of debugging in Spring Boot applications.

Back to Blog

Related posts

Read more »

Let's separate the separation

Introduction During the last days of 2025, our team lead took an extra day off and missed an important meeting. After a recent restructure, one colleague left...