首页 > 其他分享 >jackson 常用注解

jackson 常用注解

时间:2022-09-07 15:45:03浏览次数:94  
标签:常用 jackson class json 注解 序列化 public 属性

@JsonPropertyOrder({ "name", "id" })
指定 序列化属性的顺序

@JsonPropertyOrder(alphabetic=true)
按字母顺序对属性进行排序

@JsonRawValue
属性 注释可以 指示 Jackson 完全按原样序列化 。
这个注解可以将一个对象中的 json 字符串序列换成 json 对象

@JsonValue
通过其名称进行序列化
通常用于枚举类的转换

@JsonRootName(value = "user")
可以在 jison 对象外再包裹一层,上面的这注解会在原来的对象外层增加一个 user 的根对象

@JsonSerialize(using = CustomDateSerializer.class)
自定义 Jackson 序列化

public class CustomDateSerializer extends StdSerializer<Date> {

    private static SimpleDateFormat formatter 
      = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

    public CustomDateSerializer() { 
        this(null); 
    } 

    public CustomDateSerializer(Class<Date> t) {
        super(t); 
    }

    @Override
    public void serialize(
      Date value, JsonGenerator gen, SerializerProvider arg2) 
      throws IOException, JsonProcessingException {
        gen.writeString(formatter.format(value));
    }
}

@JsonCreator
序列化时如果本对象没有对应的字段,可以在类的构造器上使用该注解,指定对应关系

@JacksonInject
表示属性将从注入而不是从 JSON 数据中获取其值

public class BeanWithInject {
    @JacksonInject
    public int id;
    
    public String name;
}

@Test
public void whenDeserializingUsingJsonInject_thenCorrect()
  throws IOException {
 
    String json = "{\"name\":\"My bean\"}";
    
    InjectableValues inject = new InjectableValues.Std()
      .addValue(int.class, 1);
    BeanWithInject bean = new ObjectMapper().reader(inject)
      .forType(BeanWithInject.class)
      .readValue(json);
    
    assertEquals("My bean", bean.name);
    assertEquals(1, bean.id);
}

@JsonAnySetter

@JsonSetter
反序列化时如果本对象没有对应的字段,可以在类的构造器上使用该注解,指定对应关系

@JsonDeserialize
自定义反序列化器。

public class EventWithSerializer {
    public String name;

    @JsonDeserialize(using = CustomDateDeserializer.class)
    public Date eventDate;
}

public class CustomDateDeserializer
  extends StdDeserializer<Date> {

    private static SimpleDateFormat formatter
      = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss");

    public CustomDateDeserializer() { 
        this(null); 
    } 

    public CustomDateDeserializer(Class<?> vc) { 
        super(vc); 
    }

    @Override
    public Date deserialize(
      JsonParser jsonparser, DeserializationContext context) 
      throws IOException {
        
        String date = jsonparser.getText();
        try {
            return formatter.parse(date);
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
    }
}

@JsonAlias
定义 一个或多个替代名称,适用于在反序列化时 pojo 匹配多个不确定的名称的 json 对象时使用

@JsonIgnoreProperties({ "id" })
是一个类级别的注释用于标记 Jackson 将忽略的属性或属性列表

@JsonIgnore
标记要在字段级别忽略的属性

@JsonIgnoreType
标记要忽略的带注释类型的所有属性,常用于内部类

@JsonInclude(Include.NON_NULL)
排除具有空/null/默认值的属性,用于类上

@JsonAutoDetect
覆盖 哪些属性可见和哪些不可见,比如启用序列化私有属性 JsonAutoDetect(fieldVisibility = Visibility.ANY)

Jackson 多态类型处理
@JsonTypeInfo – 指明序列化中要包含的类型信息的详细信息
@JsonSubTypes – 表示注解类型的子类型
@JsonTypeName – 定义用于注释类的逻辑类型名称

@JsonProperty
序列化/反序列化属性 名称 当我们处理非标准的 getter 和 setter

@JsonFormat
指定序列化日期/时间值时的格式

@JsonUnwrapped
序列化/反序列化时应该展开/展平的值

@JsonView
将包含属性以进行序列化/反序列化的视图,可以通过该注解控制需要展示的 json 数据,分组展示

@JsonManagedReference @JsonBackReference
可以处理父/子关系 并解决循环。

@JsonIdentityInfo
可以处理无限递归时的 json 问题

@JsonFilter
可以指定在序列化期间使用的过滤器,可以灵活的控制序列化的数据的多少

@JacksonAnnotationsInside
创建自定义 Jackson 注释,可以将多个注解形成一组,从而方便使用

// https://www.baeldung.com/jackson-annotations

标签:常用,jackson,class,json,注解,序列化,public,属性
From: https://www.cnblogs.com/manastudent/p/16665669.html

相关文章

  • 类型注解基础
    介绍类型注解是一种给函数参数、返回值以及任何变量增加类型描述的技术,规范的注解可以大大提升代码可读性举个例子,下面的代码没有任何类型注解classDuck:"""鸭子类......
  • @Valid注解
    分类限制说明空和非空检查@Null限制只能为null@NotNull限制必须不为null@NotEmpty验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为......
  • SpringBoot使用自定义注解+AOP+Redis实现接口限流
    为什么要限流系统在设计的时候,我们会有一个系统的预估容量,长时间超过系统能承受的TPS/QPS阈值,系统有可能会被压垮,最终导致整个服务不可用。为了避免这种情况,我们就需要对......
  • SpringBoot常用注解
    SpringBoot常用注解1.@SpringBootApplicationspringBoot的基石,启动类@Configuration应许spring注册额外的bean或者导入其他配置类@EnableAutoConfiguration启用Sp......
  • Git常用命令
    gitcommit提交gitbranch查看分支gitcheckoutmaster切换分支gitcheckout-bbugFix创建并切换到新分支gitswitchmaster切换分支gitmergemaster合并......
  • HTML/HTML5常用标签和属性
    HTML/HTML5常用标签和属性四、标题标签TIPh系列标签表示“标题”含义,h是headline的意思1、h1~h6标签标签语义h1一级标题h2二级标题h3三级......
  • 【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
    目录一、概述二、Helm仓库(helmrepo)1)添加chart仓库2)列出已添加的仓库3)从chart仓库中更新本地可用chart的信息4)删除一个或多个仓库三、创建chart(helmcreate)四、chart包安......
  • docker常用镜像命令
    由于想把自己写的Python代码和所需的环境放到docker,所以最近又去学了下docker相关知识,这篇先整理一下docker镜像命令1、列出本地镜像dockerimages用法 dockerimages......
  • Hutool工具包与 apache commons常用的工具类
    是对java工具类库的增强版,有农历日历https://blog.csdn.net/qq_22067469/article/details/822244061.org.apache.commons.io.IOUtils2.org.apache.commons.io.FileUtil......
  • CentOS7 常用命令集合
    CentOS7常用命令集合CentOS7常用命令集合常用命令文件与目录操作命令解析cd/home进入‘/home’目录cd…返回上一级目录cd…/…返回上两级目录cd-......