文章目录
- 前言
- 一、对象属性转换问题
- 二、如何处理转换?
- 三 、处理办法
- 1 利用 @JsonProperty 改变转出属性
- 2 利用 @JsonAlias 增加接收的属性
- 总结
前言
在java中,有时候会涉及到一些对象的转换,为什么转换呢?
- 由于接受参数和用的时候对应不上
- 由于经历过一些修改,为了兼容
一、对象属性转换问题
例如 接收的字段名称为 name
使用的时候,或者对应另一个对象字段值为 xingming
二、如何处理转换?
- 利用阿里巴巴的 fastjson2
- 以及jackjson 的注解搞定
三 、处理办法
1 利用 @JsonProperty 改变转出属性
public class CoverTest {
public static void main(String[] args) throws InterruptedException {
A a = new A();
a.setName("小明");
a.setAddress("黑龙江");
a.setAge(22);
B t = JSON.parseObject(JSON.toJSONString(a), B.class);
System.out.println(JSON.toJSON(t));
}
@Data
static class A {
@JsonProperty("xingming")
private String name;
@JsonProperty("nianling")
private Integer age;
@JsonProperty("dizhi")
private String address;
}
@Data
static class B {
private String xingming;
private Integer nianling;
private String dizhi;
}
}
执行如下
2 利用 @JsonAlias 增加接收的属性
public class CoverTest {
public static void main(String[] args) throws InterruptedException {
C c = new C();
c.setName("小明");
c.setAddress("黑龙江");
c.setAge(22);
D d = JSON.parseObject(JSON.toJSONString(c), D.class);
System.out.println(JSON.toJSON(d));
}
@Data
static class C {
private String name;
private Integer age;
private String address;
}
@Data
static class D {
@JsonAlias("name")
private String xingming;
@JsonAlias("age")
private Integer nianling;
@JsonAlias("address")
private String dizhi;
}
}
运行结果如下
总结
可以利用 @JsonProperty 改变转成json 时候的属性值(key值)
可以利用 @JsonAlias 增加转为对象时候接受的属性值(key值),并且原有的属性值也可以用
还可以用 @JsonProperty 和 @JsonAlias 同时使用,同时增加接收参数和转出参数的值