springmvc 序列化枚举类

Posted QQ_851228082

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springmvc 序列化枚举类相关的知识,希望对你有一定的参考价值。

springmvc中,经常用到枚举类转json。
比如一个枚举类

public enum MyEnum
  INSTANCE1("code1","name1"),
    INSTANCE2("code2","name2"),
    ;
	private String code;
    private String name;
	MyEnum(String code, String name) 
        this.code = code;
        this.name = name;
    
    //getter and setter

springmvc json转换器默认使用jackson,序列化的结果是

["INSTANCE1","INSTANCE2"]

但一般期望序列化后结果是

["code":"code1","name":"name1","code":"code2","name":"name2"]

使用jackson2注解,类上添加注解JsonFormat,设置shape

import com.fasterxml.jackson.annotation.JsonFormat;
@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum MyEnum 
@RequestMapping("list")
  public MyEnum[] myEnums()
      return MyEnum.values();
  

序列化后

["code":"code1","name":"name1","code":"code2","name":"name2"]

fastjson序列化枚举类

首先在类上添加serializeEnumAsJavaBean

import com.alibaba.fastjson.annotation.JSONType;
@JSONType(serializeEnumAsJavaBean = true)
public enum MyEnum

使用toJSONString方法

JSONObject.toJSONString(MyEnum.values())

以上是关于springmvc 序列化枚举类的主要内容,如果未能解决你的问题,请参考以下文章

springmvc 枚举类转json

springmvc配置文件 序列化

深度分析Java的枚举类型—-枚举的线程安全性及序列化问题

Java枚举类的serialVersionUID

java的枚举类enum,定义静态变量还可以有抽象方法,但枚举类不能被继承

设计模式使用场景优缺点汇总