JsonUnwrapped (Jackson-annotations 2.13.0 API)
Date: 2021-09-30

com.fasterxml.jackson.annotation

## Annotation Type JsonUnwrapped

-     @Target(value={ANNOTATION_TYPE,FIELD,METHOD,PARAMETER})
       @Retention(value=RUNTIME)
      public @interface JsonUnwrapped

  Annotation used to indicate that a property should be serialized "unwrapped" -- that is, if it would be serialized as JSON Object, its properties are instead included as properties of its containing Object -- and deserialized reproducing "missing" structure. For example, consider case of POJO like:

        public class Parent {
          public int age;
          public Name name;
        }
        public class Name {
          public String first, last;
        }

  which would normally be serialized as follows (assuming `@JsonUnwrapped` had no effect):

        {
          "age" : 18,
          "name" : {
            "first" : "Joey",
            "last" : "Sixpack"
          }
        }

  can be changed to this:

        {
          "age" : 18,
          "first" : "Joey",
          "last" : "Sixpack"
        }

  by changing Parent class to:

        public class Parent {
          public int age;
          @JsonUnwrapped
          public Name name;
        }

  Annotation can only be added to properties, and not classes, as it is contextual. When values are deserialized "wrapping" is applied so that serialized output can be read back in.

  Also note that annotation only applies if:

  - Value is serialized as an Object valie (can not unwrap Array values using this mechanism)
  - Reading/writing is done using Jackson standard `BeanDeserializer` / `BeanSerializer`; or custom deserializer/serializer MUST explicitly support similar operation.
  - Will not work with polymorphic type handling ("polymorphic deserialization")

- - ### Optional Element Summary

    Optional Elements
    Modifier and Type | Optional Element and Description
    --- | ---
    `boolean` | `enabled` Property that is usually only used when overriding (masking) annotations, using mix-in annotations.
    `String` | `prefix` Optional property that can be used to add prefix String to use in front of names of properties that are unwrapped: this can be done for example to prevent name collisions.
    `String` | `suffix` Optional property that can be used to add suffix String to append at the end of names of properties that are unwrapped: this can be done for example to prevent name collisions.

- - ### Element Detail

    - #### enabled

          public abstract boolean enabled

      Property that is usually only used when overriding (masking) annotations, using mix-in annotations. Otherwise default value of 'true' is fine, and value need not be explicitly included.
      Default:
        true

  - - #### prefix

          public abstract String prefix

      Optional property that can be used to add prefix String to use in front of names of properties that are unwrapped: this can be done for example to prevent name collisions.
      Default:
        ""

  - - #### suffix

          public abstract String suffix

      Optional property that can be used to add suffix String to append at the end of names of properties that are unwrapped: this can be done for example to prevent name collisions.
      Default:
        ""

Copyright © 2008–2021 FasterXML. All rights reserved.