文章目录
- 引言
- I 案例分析
-
- 1.1 接口签名计算
- 1.2 请求对象
- 1.3 枚举对象序列化
- II 在JSON中以枚举的code值来表示枚举的实现方式
-
- 2.1 自定义toString方法返回code
引言
在Java中,每个对象都有一个toString方法,用于返回该对象的字符串表示。默认情况下,Enum类的toString方法返回的是枚举的名称,这在某些情况下可能不是我们想要的。
例如签名计算场景:使用Hutool的toJSONStr方法时,如果传递的是枚举对象,它会自动将枚举对象转换为相应的JSON字符串。 但是计算签名是使用以枚举的code值,因此需要自定义枚举的toString方法来实现。
解决方案:将Java枚举转换为JSON字符串的步骤
封装: 为了更好地组织代码,我们可以将重写toString方法的逻辑放在一个接口中,并让每个枚举值实现该接口。
I 案例分析
需求: 接口统一使用Post请求方式,请求参数使用自定义对象,请求头包含随机数和签名值。
1.1 接口签名计算
- 请求对象格式化为json
- 将json请求对象转为Map
- 添加随机数,添到请求Map中
- 构建签名参数
- 获取接口签名: 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)去除value值为null的元素; 数组用[]表示,对象(字典)用{} 表示进行排序拼接。
1.2 请求对象
<