我是靠谱客的博主 舒适发卡,最近开发中收集的这篇文章主要介绍关于Java的enum枚举属性与Json字符串之间的互转,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

可能很多人遇到过类似的问题:Java的enum枚举属性与Json字符串之间的互转,但json字符串结果是enum枚举的名称,不是想要的翻译的结果----按枚举类的某个属性值翻译。那么最简单方法是在enum枚举类中实现属性字段定义,在get方法上添加注解@JsonValue。如下面的示例:

import com.fasterxml.jackson.annotation.JsonValue;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.Serializable;
import java.text.SimpleDateFormat;

public class TestEnum {

    public enum StatusEnum {
        NODE(0, "无"),
        START(1, "开始"),
        END(2, "结束");

        private Integer code;
        private String name;

        private StatusEnum(Integer code, String name) {
            this.code = code;
            this.name = name;
        }

        @JsonValue
        public Integer getCode() {
            return code;
        }

        public void setCode(Integer code) {
            this.code = code;
        }

        public String getName() {
            return name;
        }

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

    public static class Person implements Serializable {
        private String name;
        private String id;
        private StatusEnum status;

        public String getName() {
            return name;
        }

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

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }


        public StatusEnum getStatus() {
            return status;
        }

        public void setStatus(StatusEnum status) {
            this.status = status;
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + ''' +
                    ", id='" + id + ''' +
                    ", status=" + status +
                    '}';
        }
    }

    public static void main(String[] args) {
        TestEnum.Person person = new TestEnum.Person();
        person.setId("1111");
        person.setName("Jack.Ma");
        person.setStatus(StatusEnum.START);

        try {
            ObjectMapper mapper = new ObjectMapper();
            mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
            String value = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(person);
            System.out.println(value);
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            TestEnum.Person person1=mapper.readValue(value, TestEnum.Person.class);
            System.out.println(person1);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出结果:

Person对象翻译成Json字符串
{
“name” : “Jack.Ma”,
“id” : “1111”,
“status” : 1
}

Json字符串翻译成Person对象:
Person{name=‘Jack.Ma’, id=‘1111’, status=START}

以上内容希望能帮助大家解决问题。

最后

以上就是舒适发卡为你收集整理的关于Java的enum枚举属性与Json字符串之间的互转的全部内容,希望文章能够帮你解决关于Java的enum枚举属性与Json字符串之间的互转所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部