Jackson常用的注解使用和使用场景:

接下来我们在看一段代码,这段代码是常用注解在实体类User中的简单使用:
package zone.reborn.springbootstudy.entity;

import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;

/**
 * @author 作者: reborn
 * @version 创建时间: 2018年7月15日 下午3:59:45
 * @description 类说明:用户实体类
 */
public class User {

private String name;

@JsonIgnore // 利用底层jackson注解
    private String password;

private Integer age;

@JsonFormat(pattern = "yy-MM-dd HH:mm:ss a", locale = "zh", timezone = "GMT+8")//yy-MM-dd HH:mm:ss
    private Date birthday;

@JsonInclude(JsonInclude.Include.NON_NULL)
    private String desc;

public String getName() {
        return name;
    }

public void setName(String name) {
        this.name = name;
    }

public String getPassword() {
        return password;
    }

public void setPassword(String password) {
        this.password = password;
    }

public Integer getAge() {
        return age;
    }

public void setAge(Integer age) {
        this.age = age;
    }

public Date getBirthday() {
        return birthday;
    }

public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

public String getDesc() {
        return desc;
    }

public void setDesc(String desc) {
        this.desc = desc;
    }

}
单独拿出来,聊聊:

@JsonIgnore      忽略此属性,比如password我并不想返回给前端,就可以添加此注解
@JsonFormat(pattern = "yy-MM-dd HH:mm:ss a", locale = "zh", timezone = "GMT+8")     进行数据格式化
@JsonInclude(JsonInclude.Include.NON_NULL)    如果此字段为null不返回该字段数据。
@JsonProperty(value = "user_name")      指定序列化时的字段名,默认使用属性名
@JsonUnwrapped(prefix = "user_")    
把成员对象中的属性提升到其容器类,并添加给定的前缀,比如上例中: User类中有name和age两个属性,不使用此注解则序列化为:

... "user": { "name": "xxx", "age": 22 } ...

使用此注解则序列化为:

... "user_name": "xxx", "user_age": 22, ..

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,property = "id")    作用于类或属性上,被用来在序列化/反序列化时为该对象或字段添加一个对象识别码,通常是用来解决循环嵌套的问

Jackson在java代码的使用场景:

@PostMapping("/jackson")
@ResponseBody
public Object jackson() {
User user = new User();
user.setName("小明");
user.setEmail("xiaoming@qq.com");
user.setAge(20);
ObjectMapper objectMapper = new ObjectMapper();
// 将对象转换成json格式 格式化时间类型数据
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
//对象转json
String json = objectMapper.writeValueAsString(user);
System.out.println(json);
// 将json格式转换成对象 User user2 = objectMapper.readValue(json, User.class);
System.out.println(user2.toString()); // 将集合转换成json
List<User> list = new ArrayList<User>();
list.add(user);
String jsonString = objectMapper.writeValueAsString(list);
System.out.println(jsonString);
// json转换成集成对象
objectMapper.writeValue(new File("E:/lib/jackjson/jackjsonTest.txt"), jsonString); User user3 = new Lisi();
user3.setAge(30);
user3.setBirthday(new Date());
user3.setEmail("11@22.com");
user3.setName("lisi");
System.out.println(objectMapper.writeValueAsString(user3));
}

springboot 底层 JackSon 的使用的更多相关文章

  1. springboot之jackson的两种配置方式

    springboot 针对jackson是自动化配置的,如果需要修改,有两种方式: 方式一:通过application.yml 配置属性说明:## spring.jackson.date-format ...

  2. SpringBoot与jackson.databind兼容报错问题

    SpringBoot与jackson.databind兼容报错问题 ———————————————— 1.SpringBoot版本V2.0.0其依赖的jackson-databind版本为V2.9.4 ...

  3. 源码分析springboot自定义jackson序列化,默认null值个性化处理返回值

    最近项目要实现一种需求,对于后端返回给前端的json格式的一种规范,不允许缺少字段和字段值都为null,所以琢磨了一下如何进行将springboot的Jackson序列化自定义一下,先看看如何实现,再 ...

  4. 让SpringBoot的jackson支持JavaBean嵌套的protobuf

    问题背景 REST 项目使用protobuf 来加速项目开发,定义了很多model,vo,最终返回的仍然是JSON. 项目中一般使用 一个Response类, public class Respons ...

  5. SpringBoot系列——Jackson序列化

    前言 Spring Boot提供了与三个JSON映射库的集成: Gson Jackson JSON-B Jackson是首选的默认库. 官网介绍: https://docs.spring.io/spr ...

  6. SpringBoot全局Jackson配置未生效

    在做一个小项目,后台服务第一次用SpringBoot构建.接口使用Json格式,在application.properties中配置如下: spring.jackson.default-propert ...

  7. SpringBoot自定义Jackson配置

    为了在SpringBoot工程中集中解决long类型转成json时JS丢失精度问题和统一设置常见日期类型序列化格式,我们可以自定义Jackson配置类,具体如下: import com.fasterx ...

  8. SpringBoot中Jackson的过滤使用

    在接口的返回对象中,可能会有一些属性为null或者需要禁止某些字段返回给客户端. 在SpringBoot中可使用内置了Jackson实现这个需求 1. 过滤为null字段 在实体类中使用@JsonIn ...

  9. Springboot中Jackson的操作

    有一段时间没写博客了,虽然是菜鸟一枚但毕竟总要有东西记录学习的,我相信有志者事竟成.今天在工作中使用Jackson转换了一个javabean,传到测试服上之后发现日期少了一天,使用的是@JsonFor ...

随机推荐

  1. element之input输入搜索联想框

    1. 模板代码 <el-autocomplete :minlength="2" v-model="searchName" :fetch-suggestio ...

  2. set 集合的函数调用

    方法 意义 S.add(e) 在集合中添加一个新的元素e:如果元素已经存在,则不添加 S.remove(e) 从集合中删除一个元素,如果元素不存在于集合中,则会产生一个KeyError错误 S.dis ...

  3. 智能指针原理及实现(2)unique_ptr

    只允许基础指针的一个所有者. 可以移到新所有者(具有移动语义),但不会复制或共享(即我们无法得到指向同一个对象的两个unique_ptr). 替换已弃用的 auto_ptr. 相较于 boost::s ...

  4. 自动化测试环境搭建(appium+selenium+python)

    一.需要安装的软件(根据你所需要的版本安装即可,不一定必须按照小编的版本来) JDK:1.8.0_171 Python:3.7.1 node.js:10.13.0 android-sdk_r24.4. ...

  5. 通过轻量级终端工具Tera Term远程向linux操作系统上传war文件

    通过轻量级终端工具Tera Term远程向linux操作系统上传war文件 1.打开Tera Term终端工具,并输入正确的远程机器的IP地址以及端口号: 2.输入正确的用户名和密码进入到linux操 ...

  6. HDU 2897 bash 博弈变形

    一堆石子N个 每个人最少取P个 最多取Q个 最后取光的人输 问谁赢 X=N%(P+Q)  X=0则先手取Q个必胜 X<=P则后手胜 X>P则先手取P个必胜 #include <ios ...

  7. Layui 内置方法 - layer.prompt_(输入层)

    prompt的参数也是向前补齐的.options不仅可支持传入基础参数,还可以传入prompt专用的属性.当然,也可以不传,yes携带value 表单值index 索引elem 表单元素. promp ...

  8. mac系统 flutter从安装到第一个应用

    mac系统 安装flutter 分三步: 1. 安装flutter sdk 2. flutter环境变量配置 3. 建立flutter应用 Flutter SDK下载 打开终端执行命令 git clo ...

  9. Hive启动报错Terminal initialization failed; falling back to unsupported java.lang.Incomp

    这个报错需要删除hadoop目录下,需要删除下面目录下的文件,重启hadoop和hive即可 $HADOOP_HOME/share/hadoop/yarn/lib/jline-0.9.94.jar

  10. Mysql中查询索引和创建索引

    查询索引   show index from table_name 1.添加PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMARY KEY ( ` ...