From 31515fa45963804fbc3e02311f8b546d44dc3878 Mon Sep 17 00:00:00 2001 From: lambochen Date: Tue, 22 Jul 2025 21:37:06 +0800 Subject: [PATCH 1/2] bugfix: When the Tool parameter is an empty string, a type conversion error occurs, reporting java.lang.NumberFormatException Signed-off-by: lambochen --- .../java/org/springframework/ai/util/json/JsonParser.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java index b5448803152..4e5d007ac8b 100644 --- a/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java +++ b/spring-ai-model/src/main/java/org/springframework/ai/util/json/JsonParser.java @@ -33,6 +33,8 @@ /** * Utilities to perform parsing operations between JSON and Java. + * + * @author lambochen */ public final class JsonParser { @@ -141,7 +143,11 @@ public static Object toTypedObject(Object value, Class type) { if (javaType == String.class) { return value.toString(); } - else if (javaType == Byte.class) { + if (value.toString().isEmpty()) { + return null; + } + + if (javaType == Byte.class) { return Byte.parseByte(value.toString()); } else if (javaType == Integer.class) { From 0915de2707c4296fa64a9224c2598190d7f6c4d1 Mon Sep 17 00:00:00 2001 From: lambochen Date: Tue, 22 Jul 2025 21:40:22 +0800 Subject: [PATCH 2/2] ut for JsonParser.toTypedObject when param is empty string Signed-off-by: lambochen --- .../org/springframework/ai/util/json/JsonParserTests.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java index 61e073b701b..00981544025 100644 --- a/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java +++ b/spring-ai-model/src/test/java/org/springframework/ai/util/json/JsonParserTests.java @@ -262,6 +262,12 @@ void doesNotDoubleSerializeValidJsonString() { assertThat(input).isEqualTo(result); } + @Test + void emptyString() { + var value = JsonParser.toTypedObject("", Long.class); + assertThat(value).isEqualTo(null); + } + record TestRecord(String name, Integer age) { }