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) { 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) { }