假设我们定义如下枚举类,包括code和msg两个属性。packagecn.bugkit.serialization.components;importjava.security.InvalidParameterException;/***@authorbugkit*@since2022.2.25*/publicenumResult{SUCCESS(0,"SUCCESS"),FAIL(-1,"失败”);内部代码;字符串消息;结果(intcode,Stringmsg){this.code=code;this.msg=味精;}publicintgetCode(){返回代码;}publicvoidsetCode(intcode){this.code=code;}publicStringgetMsg(){返回消息;}publicvoidsetMsg(Stringmsg){this.msg=msg;}publicstaticResultvalueOf(intcode){Result[]values=values();for(Resultresult:values){if(result.getCode()==code){返回结果;}}thrownewInvalidParameterException("无效代码");}}SpringBootJackson枚举值默认以枚举常量名称进行序列化和反序列化。假设现在前端需要通过code属性进行前端与前端之间的通信。我们应该做什么?然后使用SpringBoot提供的@JsonComponent注解。让我们看一个完整的例子。首先是控制器,它提供了输入参数(反序列化)和结果返回(序列化)的例子。/***@authorbugkit*@since2022.2.25*/@RestControllerpublicclassEnumController{/***输入的结果字符串是-1-失败,结果是0-成功*@paramresponse*@return*/@PostMapping("test")publicHttpResponsetestSerialize(@RequestBodyHttpResponseresponse){System.out.println(response);返回新的HttpResponse(Result.SUCCESS,null);}}下面我们看HttpResponse,包含属性result和数据/***@authorbugkit*@since2022.2.25*/publicclassHttpResponse{privateResultresult;私有对象数据;publicHttpResponse(Resultresult,Objectdata){this.result=result;这个。数据=数据;}publicResultgetResult(){返回结果;}publicvoidsetResult(Resultresult){this.result=result;}publicObjectgetData(){返回数据;}publicvoidsetData(Objectdata){this.data=data;}@OverridepublicStringtoString(){返回"HttpResponse{"+"result="+result+",data="+data+'}';}}最后看重点,标记Result/***@authorbugkit*@since2022.2.25*/@JsonComponentpublicclassWenSerialization{/***序列化,即转JavaobjectstoJSON,用于将Java对象转换为前端需要的结果。这里只传输结果代码字段*/publicstaticclassResultSerializerextendsJsonSerializer
