java枚举 基本类型转换,fasterxml如何对Java枚举类型做类型转换

首先我们有一个Student类:

package com.dusk.json;

/**

* Created by dushangkui on 2017/5/3.

*/

public class Student {

private String name;

private SexEnum sex;

public Student(String name, SexEnum sex) {

this.name = name;

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public SexEnum getSex() {

return sex;

}

public void setSex(SexEnum sex) {

this.sex = sex;

}

}

其中SexEnum是一个关于性别的枚举:

package com.dusk.json;

/**

* Created by dushangkui on 2017/5/3.

*/

public enum SexEnum {

Female(1,"女"),

Male(2,"男");

private int code;

private String desc;

private SexEnum(int code, String desc){

this.code=code;

this.desc=desc;

}

public int getCode() {

return code;

}

}

我们看场景类:

package com.dusk.json;

import com.fasterxml.jackson.core.JsonProcessingException;

import com.fasterxml.jackson.databind.ObjectMapper;

import org.junit.Test;

/**

* Created by dushangkui on 2017/5/3.

*/

public class Client {

@Test

public void test() throws JsonProcessingException {

Student stu1 = new Student("张三", SexEnum.Male);

Student stu2 = new Student("小丽", SexEnum.Female);

ObjectMapper objectMapper = new ObjectMapper();

System.out.println(objectMapper.writeValueAsString(stu1));

System.out.println(objectMapper.writeValueAsString(stu2));

}

}

我们可以看到转换结果:

c102d6d79e1cc1f3437798f35d7852cc.png

从上面我们看到枚举转换成了枚举类型的项名。如果我们想要转换成枚举的code怎么做?

修改Student类:

package com.dusk.json;

import com.fasterxml.jackson.annotation.JsonGetter;

import com.fasterxml.jackson.annotation.JsonSetter;

/**

* Created by dushangkui on 2017/5/3.

*/

public class Student {

private String name;

private SexEnum sex;

public Student(String name, SexEnum sex) {

this.name = name;

this.sex = sex;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public SexEnum getSex() {

return sex;

}

public void setSex(SexEnum sex) {

this.sex = sex;

}

@JsonSetter

public void sex(int sex) {

if(sex==1)

this.sex = SexEnum.Female;

else

this.sex = SexEnum.Male;

}

@JsonGetter

public int sex() {

return sex.getCode();

}

}

可以看到我们新增了两个方法并且分别使用了JsonSetter和JsonGetter注解,运行:

f2dd6e01f679b894ae106851964da427.png

我们看到枚举类型被映射成了他们对应的code。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值