Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

The Jackson error Cannot deserialize from Object value (no delegate- or property-based Creator) means Jackson received a JSON object but could not find a supported way to construct the requested Java type from it. Matching JSON keys to fields is not enough when the class only has a parameterized constructor: Jackson needs a recognized creator and, for property-based construction, a mapping from JSON properties to constructor parameters.

Why Jackson cannot construct the object

Jackson needs a usable construction route before it can populate a target type. A mutable bean can be created with a no-argument constructor and then filled through writable properties. An immutable class generally needs an explicitly mapped constructor or factory method. Without one of those routes, Jackson may report that it has no delegate- or property-based creator.

The exact exception class and surrounding text can vary. Treat the wording as a creator or instantiation clue, not proof of one specific defect. First check that the input is actually an object with the shape the target type expects. A delegating creator may exist but expect a scalar or another value shape rather than an object.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose a construction method that fits the class

Mutable DTO: no-argument constructor and writable properties

If the class is designed to be populated after construction, provide an accessible no-argument constructor and setters or other writable properties. Jackson can instantiate the object and then assign the JSON values.

public class Notification {
    private String message;
    private int priority;

    public Notification() {}

    public void setMessage(String message) { this.message = message; }
    public void setPriority(int priority) { this.priority = priority; }
}

A no-argument constructor alone is not sufficient if the properties are inaccessible, read-only, or named differently from the input under the mapper’s visibility and naming rules.

Immutable class: property-based constructor

For constructor-initialized fields, annotate the constructor with @JsonCreator and each parameter with the matching @JsonProperty. This explicitly tells Jackson how object properties map to constructor arguments.

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Notification {
    private final String message;
    private final int priority;

    @JsonCreator
    public Notification(
            @JsonProperty("message") String message,
            @JsonProperty("priority") int priority) {
        this.message = message;
        this.priority = priority;
    }
}

Use annotations from com.fasterxml.jackson.annotation. The legacy org.codehaus.jackson package is not the annotation package for this Jackson setup. Match each annotation value to the actual JSON property name, accounting for any aliases or naming strategy used by the application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

One-argument creators: choose property-based or delegating deliberately

A one-argument creator can be ambiguous in intent. A delegating creator treats the incoming JSON value as a whole value to convert to the argument type; a property-based creator binds named properties of an object to constructor parameters. For example, a creator expecting a String as the entire input does not necessarily accept an object containing a string property. Make the intended input shape explicit and check that it matches the JSON token Jackson is reading.

Static factory creator

A static factory can provide the construction route when creation is controlled or constructor visibility is unsuitable. Annotate the factory with @JsonCreator, map its parameters with @JsonProperty, and return the target type.

@JsonCreator
public static Notification create(
        @JsonProperty("message") String message,
        @JsonProperty("priority") int priority) {
    return new Notification(message, priority);
}

When constructor parameter names are inferred

Per-parameter @JsonProperty annotations are the clearest way to make the mapping explicit. If you rely on inferred names instead, check the build and mapper setup:

  • For Jackson 2.x, Baeldung documents use of ParameterNamesModule when code is compiled with javac’s -parameters option, which retains constructor parameter names at runtime.
  • Baeldung states that this behavior is built into Jackson 3.x and enabled by default. Confirm the exact version and defaults used by your project rather than assuming inference is active.
  • Verify the intended module is registered on the ObjectMapper used for the failing call. Registering it on a different mapper will not affect that deserialization.

Parameter-name inference depends on retained metadata and library configuration. Explicit annotations avoid that dependency and document the JSON-to-constructor mapping. Baeldung also mentions Paranamer as a Jackson 2.x option, but reports it as discontinued; it is not a sensible default for a new implementation.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Diagnose the failure in a practical order

  1. Confirm the target and input shape. Identify the exact Java type requested at the failing call and inspect the JSON value at that location. Confirm it is an object, not a scalar or a differently shaped nested value.
  2. Inspect constructors and factories. Check for an accessible no-argument constructor, parameterized constructors, and static factory methods. An explicit parameterized constructor may leave the class without a usable no-argument route.
  3. Match the remedy to the design. For a mutable bean, confirm Jackson can call a no-argument constructor and write the relevant properties. For an immutable type, designate a property-based creator and map its parameters.
  4. Check binding details. Verify annotation imports, JSON property spelling, access visibility, mapper configuration, generated-code behavior, and any aliases or naming strategies.
  5. Validate inferred names if used. Check the -parameters compiler option, runtime parameter metadata, registration of the intended module on the actual mapper, and the Jackson version.
  6. Reduce upgrade-related failures. If the issue began after a dependency change, make a minimal reproduction containing the target class, annotations, mapper configuration, and JSON. Compare the working and failing dependency versions before changing constructor semantics or downgrading.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

If the exception started after a Jackson upgrade

Record the exact versions of jackson-databind, jackson-annotations, and any related modules, then compare them with the last working build. A FasterXML issue opened January 15, 2025 describes a report on Jackson 2.18.2 involving a legacy class with @JsonCreator and @ConstructorProperties; the issue lists milestone 2.18.3. That report shows that creator-introspection differences can arise in an upgrade context, but it does not establish that every similar error is a Jackson defect or that the same behavior affects every release. Check the issue details at FasterXML issue 4919 and reproduce the behavior against the versions your application supports.

Pick the fix by design, not by symptom alone

Situation Suitable route Important check
Mutable DTO populated after creation No-argument constructor plus writable properties Constructor access and property writability
Immutable class initialized through named values @JsonCreator with matching @JsonProperty parameters Names must match the JSON contract
Controlled or non-public construction design Annotated static factory Factory parameters and return type must describe the intended mapping
Constructor names inferred from metadata Parameter-name module or version-supported inference Compiler flags, mapper registration, and exact Jackson version

For an immutable class whose invariants are established in its constructor, adding setters merely to silence the exception may weaken the design. Conversely, a mutable DTO does not need a constructor-based creator if ordinary post-construction property assignment is the intended model.

Version context and references

Baeldung’s example of this exception uses Jackson 2.17.2 and explains the constructor, annotation, factory, and parameter-name approaches. Its article was last updated September 14, 2026: Jackson exception: no delegate- or property-based Creator.

For annotation behavior and creator configuration, see the FasterXML Jackson annotations wiki. Its publication date is not established here, so confirm release-specific behavior against the versions in your build.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.