java中对象字段转换

77 阅读2分钟

文章目录


前言

在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;
    }
}

运行结果如下
C>>D


总结

可以利用 @JsonProperty 改变转成json 时候的属性值(key值)
可以利用 @JsonAlias 增加转为对象时候接受的属性值(key值),并且原有的属性值也可以用
还可以用 @JsonProperty 和 @JsonAlias 同时使用,同时增加接收参数和转出参数的值

本文转自 jimolvxing.blog.csdn.net/article/det…,如有侵权,请联系删除。