From 6a72fecbb11e9b834094abb86938aa7d26484bf3 Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 21 Aug 2024 16:25:34 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/convert.md | 81 +++++++++++++++++++ .../redkale/test/http/RestConvertBean.java | 4 +- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/docs/convert.md b/docs/convert.md index db317860a..369b39170 100644 --- a/docs/convert.md +++ b/docs/convert.md @@ -364,6 +364,87 @@ public class InnerCoderEntity { } ``` +## RestConvert +  ```@RestConvert```、```@RestConvertCoder```是针对```@RestService```接口进行自定义序列化注解 +```java +@Data +public class RestConvertItem { + + private long createTime; + + @ConvertColumn(ignore = true) + private String aesKey; +} + +@Data +public class RestConvertBean { + + private int id; + + private boolean enable; + + private String name; + + private RestConvertItem content; +} + +//将boolean类型值转换成0/1的int值 +public class RestConvertBoolCoder extends SimpledCoder { + + @Override + public void convertTo(W out, Boolean value) { + out.writeInt(value == null || !value ? 0 : 1); + } + + @Override + public Boolean convertFrom(R in) { + return in.readInt() == 1; + } +} + +@RestService(name = "test", autoMapping = true) +public class RestConvertService extends AbstractService { + + //输出: {"content":{"createTime":100},"enable":true,"id":123,"name":"haha"} + public RestConvertBean load1() { + return createBean(); + } + + //输出: {"content":{"aesKey":"keykey","createTime":100},"enable":true,"id":123,"name":"haha"} + //aesKey字段也会被输出 + @RestConvert(type = RestConvertItem.class, skipIgnore = true) + public RestConvertBean load2() { + return createBean(); + } + + //输出: {"id":123} + //只输出id字段 + @RestConvert(type = RestConvertBean.class, onlyColumns = "id") + public RestConvertBean load3() { + return createBean(); + } + + //输出: {"content":{"createTime":100},"enable":1,"id":123,"name":"haha"} + //enable字段输出1,而不是true + @RestConvertCoder(type = RestConvertBean.class, field = "enable", coder = RestConvertBoolCoder.class) + public RestConvertBean load4() { + return createBean(); + } + + private RestConvertBean createBean() { + RestConvertBean bean = new RestConvertBean(); + bean.setId(123); + bean.setName("haha"); + bean.setEnable(true); + RestConvertItem item = new RestConvertItem(); + item.setCreateTime(100); + item.setAesKey("keykey"); + bean.setContent(item); + return bean; + } +} +``` + ## BSON数据格式   BSON类似Java自带的Serializable, 其格式如下: diff --git a/src/test/java/org/redkale/test/http/RestConvertBean.java b/src/test/java/org/redkale/test/http/RestConvertBean.java index 64540532c..64472e761 100644 --- a/src/test/java/org/redkale/test/http/RestConvertBean.java +++ b/src/test/java/org/redkale/test/http/RestConvertBean.java @@ -13,9 +13,9 @@ import org.redkale.convert.json.JsonConvert; public class RestConvertBean { private int id; - + private boolean enable; - + private String name; private RestConvertItem content;