Annotation Interface JsonDeserialize


@Target({TYPE,METHOD,FIELD,PARAMETER}) @Retention(RUNTIME) @Documented public @interface JsonDeserialize
JSON Deserialize - Specifies Custom Deserializer JSON 反序列化 - 指定自定义反序列化器

This annotation specifies a custom deserializer for a field, method, class, or parameter. It allows fine-grained control over how JSON values are converted to Java objects.

此注解为字段、方法、类或参数指定自定义反序列化器。 它允许对 JSON 值如何转换为 Java 对象进行细粒度控制。

Example | 示例:

public class Order {
    @JsonDeserialize(using = MoneyAdapter.class)
    private Money totalPrice;

    @JsonDeserialize(contentUsing = ItemAdapter.class)
    private List<Item> items;

    @JsonDeserialize(as = LinkedHashMap.class)
    private Map<String, Object> metadata;

    @JsonDeserialize(builder = Order.Builder.class)
    public static class ImmutableOrder { }
}

Features | 主要功能:

  • Custom deserializer for values - 值的自定义反序列化器
  • Custom deserializer for collection elements - 集合元素的自定义反序列化器
  • Custom deserializer for map keys - Map 键的自定义反序列化器
  • Concrete type specification via as/contentAs/keyAs - 通过 as/contentAs/keyAs 指定具体类型
  • Builder class for immutable types - 不可变类型的 Builder 类

Security | 安全性:

  • Thread-safe: Yes (immutable) - 线程安全: 是(不可变)
  • Null-safe: N/A - 空值安全: 不适用
Since:
JDK 25, opencode-base-json V1.0.0
Author:
Leon Soo www.LeonSoo.com
See Also:
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    The concrete type to deserialize the value as.
    The builder class to use for constructing immutable types.
    The concrete type to deserialize collection/array elements as.
    Class<? extends JsonTypeAdapter<?>>
    The deserializer class to use for collection/array elements.
    The concrete type to deserialize map keys as.
    Class<? extends JsonTypeAdapter<?>>
    The deserializer class to use for map keys.
    Class<? extends JsonTypeAdapter<?>>
    The deserializer class to use for the annotated value.
  • Element Details

    • using

      Class<? extends JsonTypeAdapter<?>> using
      The deserializer class to use for the annotated value. 用于注解值的反序列化器类。
      Returns:
      the deserializer class, or JsonTypeAdapter.None.class for default - 反序列化器类,JsonTypeAdapter.None.class 表示使用默认
      Default:
      cloud.opencode.base.json.adapter.JsonTypeAdapter.None.class
    • contentUsing

      Class<? extends JsonTypeAdapter<?>> contentUsing
      The deserializer class to use for collection/array elements. 用于集合/数组元素的反序列化器类。
      Returns:
      the content deserializer class - 内容反序列化器类
      Default:
      cloud.opencode.base.json.adapter.JsonTypeAdapter.None.class
    • keyUsing

      Class<? extends JsonTypeAdapter<?>> keyUsing
      The deserializer class to use for map keys. 用于 Map 键的反序列化器类。
      Returns:
      the key deserializer class - 键反序列化器类
      Default:
      cloud.opencode.base.json.adapter.JsonTypeAdapter.None.class
    • as

      Class<?> as
      The concrete type to deserialize the value as. 将值反序列化为的具体类型。

      Useful for deserializing interface or abstract types to concrete implementations.

      用于将接口或抽象类型反序列化为具体实现。

      Returns:
      the target type, or Void.class for default - 目标类型,Void.class 表示使用默认
      Default:
      java.lang.Void.class
    • contentAs

      Class<?> contentAs
      The concrete type to deserialize collection/array elements as. 将集合/数组元素反序列化为的具体类型。
      Returns:
      the content target type - 内容目标类型
      Default:
      java.lang.Void.class
    • keyAs

      Class<?> keyAs
      The concrete type to deserialize map keys as. 将 Map 键反序列化为的具体类型。
      Returns:
      the key target type - 键目标类型
      Default:
      java.lang.Void.class
    • builder

      Class<?> builder
      The builder class to use for constructing immutable types. 用于构造不可变类型的 Builder 类。

      The builder class should follow the builder pattern with a build() method that returns the target type.

      Builder 类应遵循构建者模式,包含返回目标类型的 build() 方法。

      Returns:
      the builder class, or Void.class if not applicable - Builder 类,Void.class 表示不适用
      Default:
      java.lang.Void.class