From 8b729519b0cc2ea5c948756bc79a6a4f7f7d9804 Mon Sep 17 00:00:00 2001 From: Wzp-2008 Date: Sat, 1 Feb 2025 04:26:03 +0800 Subject: [PATCH] fix: fix json message part cannot be serialized correctly --- .idea/modules/MyBot.main.iml | 1 - .../mybot-api/MyBot.mybot-api.main.iml | 1 - build.gradle.kts | 2 +- .../wzpmc/message/json/JsonMessagePart.java | 1 + src/main/java/cn/wzpmc/utils/JsonUtils.java | 7 +++--- .../json/message/JsonMessagePartWriter.java | 25 +++++++++++++++++++ .../utils/json/message/JsonMessageWriter.java | 2 +- 7 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 src/main/java/cn/wzpmc/utils/json/message/JsonMessagePartWriter.java diff --git a/.idea/modules/MyBot.main.iml b/.idea/modules/MyBot.main.iml index cc1e2ab..afc1871 100644 --- a/.idea/modules/MyBot.main.iml +++ b/.idea/modules/MyBot.main.iml @@ -3,7 +3,6 @@ - \ No newline at end of file diff --git a/.idea/modules/mybot-api/MyBot.mybot-api.main.iml b/.idea/modules/mybot-api/MyBot.mybot-api.main.iml index 14a5d1f..4acdb19 100644 --- a/.idea/modules/mybot-api/MyBot.mybot-api.main.iml +++ b/.idea/modules/mybot-api/MyBot.mybot-api.main.iml @@ -3,7 +3,6 @@ - \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index ad22b54..4ca5f3c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,7 +14,7 @@ allprojects { apply(plugin = "java-library") val groupName by extra("cn.wzpmc") val projectArtifactId by extra("my-bot") - val projectVersion by extra("1.0.5") + val projectVersion by extra("1.0.6-SNAPSHOT") repositories { mavenCentral() maven("https://libraries.minecraft.net") diff --git a/mybot-api/src/main/java/cn/wzpmc/message/json/JsonMessagePart.java b/mybot-api/src/main/java/cn/wzpmc/message/json/JsonMessagePart.java index 6051a8c..559e4a6 100644 --- a/mybot-api/src/main/java/cn/wzpmc/message/json/JsonMessagePart.java +++ b/mybot-api/src/main/java/cn/wzpmc/message/json/JsonMessagePart.java @@ -21,6 +21,7 @@ public interface JsonMessagePart { * @author wzp * @since 2024/7/31 上午2:40 v0.0.1-dev */ + @JSONField(serialize = false, deserialize = false) PartType getPartType(); @JSONField(name = "type") diff --git a/src/main/java/cn/wzpmc/utils/JsonUtils.java b/src/main/java/cn/wzpmc/utils/JsonUtils.java index 12ac8b1..3796514 100644 --- a/src/main/java/cn/wzpmc/utils/JsonUtils.java +++ b/src/main/java/cn/wzpmc/utils/JsonUtils.java @@ -12,6 +12,7 @@ import cn.wzpmc.events.notice.notify.NotifyEvent; import cn.wzpmc.events.request.RequestEvent; import cn.wzpmc.message.StringMessage; import cn.wzpmc.message.json.JsonMessage; +import cn.wzpmc.message.json.JsonMessagePart; import cn.wzpmc.user.Friend; import cn.wzpmc.user.IBot; import cn.wzpmc.user.IUser; @@ -20,10 +21,7 @@ import cn.wzpmc.utils.json.action.ActionReader; import cn.wzpmc.utils.json.action.ActionWriter; import cn.wzpmc.utils.json.event.*; import cn.wzpmc.utils.json.honor.HonorWriter; -import cn.wzpmc.utils.json.message.JsonMessageReader; -import cn.wzpmc.utils.json.message.JsonMessageWriter; -import cn.wzpmc.utils.json.message.StringMessageReader; -import cn.wzpmc.utils.json.message.StringMessageWriter; +import cn.wzpmc.utils.json.message.*; import cn.wzpmc.utils.json.user.FriendUserReader; import cn.wzpmc.utils.json.user.GroupUserReader; import cn.wzpmc.utils.json.user.IBotReader; @@ -49,6 +47,7 @@ public class JsonUtils { JSON.register(Actions.class, new ActionWriter()); JSON.register(HonorType.class, new HonorWriter()); JSON.register(StringMessage.class, new StringMessageWriter()); + JSON.register(JsonMessagePart.class, new JsonMessagePartWriter()); } /** diff --git a/src/main/java/cn/wzpmc/utils/json/message/JsonMessagePartWriter.java b/src/main/java/cn/wzpmc/utils/json/message/JsonMessagePartWriter.java new file mode 100644 index 0000000..4a0db16 --- /dev/null +++ b/src/main/java/cn/wzpmc/utils/json/message/JsonMessagePartWriter.java @@ -0,0 +1,25 @@ +package cn.wzpmc.utils.json.message; + +import cn.wzpmc.message.json.JsonMessagePart; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.JSONWriter; +import com.alibaba.fastjson2.writer.ObjectWriter; + +import java.lang.reflect.Type; + +/** + * @author wzp + * @since 2025/2/1 04:19 + * @version 1.0.5 + **/ +public class JsonMessagePartWriter implements ObjectWriter { + @Override + public void write(JSONWriter jsonWriter, Object object, Object fieldName, Type fieldType, long features) { + if (object instanceof JsonMessagePart) { + System.out.println(object); + JSONObject from = JSONObject.from(object); + from.put("type", ((JsonMessagePart) object).getStringPartType()); + jsonWriter.write(from); + } + } +} diff --git a/src/main/java/cn/wzpmc/utils/json/message/JsonMessageWriter.java b/src/main/java/cn/wzpmc/utils/json/message/JsonMessageWriter.java index b4c6cf0..3ad3e70 100644 --- a/src/main/java/cn/wzpmc/utils/json/message/JsonMessageWriter.java +++ b/src/main/java/cn/wzpmc/utils/json/message/JsonMessageWriter.java @@ -34,7 +34,7 @@ public class JsonMessageWriter implements ObjectWriter { ObjectWriter objectWriter = creator.createObjectWriter(StringMessage.class); objectWriter.write(jsonWriter, messagePart); } else { - jsonWriter.writeAny(messagePart); + new JsonMessagePartWriter().write(jsonWriter, messagePart); } if (i != size - 1) { jsonWriter.writeComma();