diff --git a/cloudext/interface/graph-store/src/main/java/com/antgroup/openspg/cloudext/interfaces/graphstore/util/TypeChecker.java b/cloudext/interface/graph-store/src/main/java/com/antgroup/openspg/cloudext/interfaces/graphstore/util/TypeChecker.java index 0bde51d81..080d20e8e 100644 --- a/cloudext/interface/graph-store/src/main/java/com/antgroup/openspg/cloudext/interfaces/graphstore/util/TypeChecker.java +++ b/cloudext/interface/graph-store/src/main/java/com/antgroup/openspg/cloudext/interfaces/graphstore/util/TypeChecker.java @@ -42,13 +42,19 @@ public static boolean isPrimitiveOrWrapper(Object obj) { || clazz.equals(Short.class) || clazz.equals(Byte.class) || clazz.equals(Boolean.class) - || clazz.equals(Character.class); + || clazz.equals(Character.class) + || clazz.equals(String.class); } public static boolean isArrayOrCollectionOfPrimitives(Object obj) { if (obj == null) { return false; } + if (obj instanceof String) { + // scalar strings must be stored as-is: JSON-encoding them adds surrounding + // quotes (e.g. 102191 -> "102191"), which breaks numeric coercion at read time + return true; + } if (obj instanceof Object[]) { for (Object element : (Object[]) obj) { if (!isPrimitiveOrWrapper(element)) {