From 6ca6c342aae8323479bccebda27ee9a6d9be1b76 Mon Sep 17 00:00:00 2001 From: Vasiliy Mikhailov Date: Fri, 10 Jul 2026 17:27:36 +0300 Subject: [PATCH] =?UTF-8?q?:art:=20#4056=20=E4=BF=AE=E5=A4=8D=20GsonHelper?= =?UTF-8?q?=20=E5=9C=A8=E8=AF=BB=E5=8F=96=E6=95=B0=E7=BB=84=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=97=B6=E7=9A=84=E5=81=A5=E5=A3=AE=E6=80=A7=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/common/util/json/GsonHelper.java | 8 +++--- .../common/util/json/GsonHelperTest.java | 25 +++++++++++++++++++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java index 0d807402a..84ebffe72 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/util/json/GsonHelper.java @@ -108,7 +108,7 @@ public class GsonHelper { } public static Integer[] getIntArray(JsonObject o, String string) { - JsonArray jsonArray = getAsJsonArray(o.getAsJsonArray(string)); + JsonArray jsonArray = getAsJsonArray(o.get(string)); if (jsonArray == null) { return null; } @@ -122,7 +122,7 @@ public class GsonHelper { } public static String[] getStringArray(JsonObject o, String string) { - JsonArray jsonArray = getAsJsonArray(o.getAsJsonArray(string)); + JsonArray jsonArray = getAsJsonArray(o.get(string)); if (jsonArray == null) { return null; } @@ -136,7 +136,7 @@ public class GsonHelper { } public static Long[] getLongArray(JsonObject o, String string) { - JsonArray jsonArray = getAsJsonArray(o.getAsJsonArray(string)); + JsonArray jsonArray = getAsJsonArray(o.get(string)); if (jsonArray == null) { return null; } @@ -150,7 +150,7 @@ public class GsonHelper { } public static JsonArray getAsJsonArray(JsonElement element) { - return element == null ? null : element.getAsJsonArray(); + return (element == null || !element.isJsonArray()) ? null : element.getAsJsonArray(); } /** diff --git a/weixin-java-common/src/test/java/me/chanjar/weixin/common/util/json/GsonHelperTest.java b/weixin-java-common/src/test/java/me/chanjar/weixin/common/util/json/GsonHelperTest.java index bafe3c30d..775ac2207 100644 --- a/weixin-java-common/src/test/java/me/chanjar/weixin/common/util/json/GsonHelperTest.java +++ b/weixin-java-common/src/test/java/me/chanjar/weixin/common/util/json/GsonHelperTest.java @@ -136,4 +136,29 @@ public class GsonHelperTest { System.out.println(GsonHelper.buildJsonObject(1, true, "jsonElement", new JsonObject())); System.out.println(GsonHelper.buildJsonObject("num", 2, "string", "cde", "char", 'a', "bool", true)); } + + /** + * If the JSON property exists but is NOT a JSON array (e.g. a plain string), + * getIntArray should return null gracefully rather than throwing ClassCastException. + */ + @Test + public void testGetIntArrayNonArrayProperty() { + JsonObject json = new JsonObject(); + json.addProperty("items", "not-an-array"); + assertThat(GsonHelper.getIntArray(json, "items")).isNull(); + } + + @Test + public void testGetStringArrayNonArrayProperty() { + JsonObject json = new JsonObject(); + json.addProperty("items", 123); + assertThat(GsonHelper.getStringArray(json, "items")).isNull(); + } + + @Test + public void testGetLongArrayNonArrayProperty() { + JsonObject json = new JsonObject(); + json.addProperty("items", "not-an-array"); + assertThat(GsonHelper.getLongArray(json, "items")).isNull(); + } }