1.JSON数组格式判断 import com. google. gson. JsonParser ; import com. google. gson. JsonSyntaxException ; public class ArrayStringChecker { // 方法1:使用Gson库判断是否是JSON数组 public static boolean isJsonArrayString ( String str) { if ( str== null || str. trim ( ) . isEmpty ( ) ) { return false ; } String trimmed= str. trim ( ) ; // JSON数组必须以 '[' 开头,以 ']' 结尾 if ( ! trimmed. startsWith ( "[" ) || ! trimmed. endsWith ( "]" ) ) { return false ; } try { // 使用Gson尝试解析 JsonParser . parseString ( trimmed) . getAsJsonArray ( ) ; return true ; } catch ( JsonSyntaxException | IllegalStateException e) { return false ; } } // 方法2:简单正则表达式判断 public static boolean isSimpleJsonArray ( String str) { if ( str== null || str. trim ( ) . isEmpty ( ) ) { return false ; } String trimmed= str. trim ( ) ; return trimmed. startsWith ( "[" ) && trimmed. endsWith ( "]" ) ; } // 方法3:判断是否有数组格式的内容 public static boolean isArrayString ( String str) { if ( str== null || str. trim ( ) . isEmpty ( ) ) { return false ; } String trimmed= str. trim ( ) ; // 检查是否是JSON数组格式 if ( trimmed. startsWith ( "[" ) && trimmed. endsWith ( "]" ) ) { // 获取数组内容部分(去掉两端的括号) String content= trimmed. substring ( 1 , trimmed. length ( ) - 1 ) . trim ( ) ; // 空数组 [] if ( content. isEmpty ( ) ) { return true ; } // 检查内容格式(简单判断) // 数组元素之间用逗号分隔,元素可以是数字、字符串等 String [ ] elements= content. split ( "," ) ; for ( String element: elements) { String elem= element. trim ( ) ; // 这里可以添加更复杂的元素格式验证 if ( elem. isEmpty ( ) ) { return false ; // 不允许空元素(除非是最后一个?) } } return true ; } return false ; } public static void main ( String [ ] args) { // 测试用例 String [ ] testCases= { "[1,2,3,4,5]" , // true "[\"a\",\"b\",\"c\"]" , // true "[]" , // true "[1, 2, 3]" , // true "[1,2,3,]" , // false(尾随逗号在JSON中无效) "1,2,3,4,5" , // false "{'a':1,'b':2}" , // false "[1,2,three]" , // true(但某些验证可能要求引号) null , // false "" , // false " [1,2,3] " // true } ; for ( String test: testCases) { System . out. println ( "输入: \"" + test+ "\"" ) ; System . out. println ( "isJsonArrayString: " + isJsonArrayString ( test) ) ; System . out. println ( "isSimpleJsonArray: " + isSimpleJsonArray ( test) ) ; System . out. println ( "isArrayString: " + isArrayString ( test) ) ; System . out. println ( "---" ) ; } } } 2.使用Jackson库判断 import com. fasterxml. jackson. databind. ObjectMapper ; import com. fasterxml. jackson. core. JsonProcessingException ; public class JacksonArrayChecker { private static final ObjectMapper mapper= new ObjectMapper ( ) ; public static boolean isJsonArrayWithJackson ( String str) { if ( str== null || str. trim ( ) . isEmpty ( ) ) { return false ; } String trimmed= str. trim ( ) ; if ( ! trimmed. startsWith ( "[" ) || ! trimmed. endsWith ( "]" ) ) { return false ; } try { // 尝试解析为JSON数组 mapper. readTree ( trimmed) . isArray ( ) ; return true ; } catch ( JsonProcessingException e) { return false ; } } } 3.自定义分隔符的数组字符串判断 public class CustomArrayChecker { // 判断是否是逗号分隔的数组字符串 public static boolean isCommaSeparatedArray ( String str) { if ( str== null || str. trim ( ) . isEmpty ( ) ) { return false ; } String trimmed= str. trim ( ) ; // 如果以方括号开头结尾,先去掉它们 if ( trimmed. startsWith ( "[" ) && trimmed. endsWith ( "]" ) ) { trimmed= trimmed. substring ( 1 , trimmed. length ( ) - 1 ) . trim ( ) ; } // 检查是否包含逗号分隔的元素 String [ ] elements= trimmed. split ( "," ) ; if ( elements. length== 0 ) { return false ; } // 验证每个元素都不为空(允许空格) for ( String element: elements) { if ( element. trim ( ) . isEmpty ( ) ) { return false ; } } return elements. length> 0 ; } // 通用分隔符判断 public static boolean isDelimitedArray ( String str, String delimiter) { if ( str== null || str. trim ( ) . isEmpty ( ) || delimiter== null ) { return false ; } String trimmed= str. trim ( ) ; // 如果以特定括号包裹 if ( trimmed. startsWith ( "[" ) && trimmed. endsWith ( "]" ) ) { trimmed= trimmed. substring ( 1 , trimmed. length ( ) - 1 ) . trim ( ) ; } String [ ] elements= trimmed. split ( delimiter) ; // 验证分隔符确实存在 if ( elements. length<= 1 && ! trimmed. contains ( delimiter) ) { return false ; } // 验证每个元素 for ( String element: elements) { if ( element. trim ( ) . isEmpty ( ) ) { return false ; } } return elements. length> 0 ; } } 4.完整的验证工具类 import java. util. regex. Pattern ; public class ArrayStringValidator { // 正则表达式验证简单的数组格式 private static final Pattern JSON_ARRAY_PATTERN= Pattern . compile ( "^\\s*\\[.*\\]\\s*$" ) ; private static final Pattern NUMBER_ARRAY_PATTERN= Pattern . compile ( "^\\s*\\[\\s*\\d+(\\s*,\\s*\\d+)*\\s*\\]\\s*$" ) ; private static final Pattern STRING_ARRAY_PATTERN= Pattern . compile ( "^\\s*\\[\\s*\"[^\"]*\"(\\s*,\\s*\"[^\"]*\")*\\s*\\]\\s*$" ) ; /** * 判断是否是数组格式的字符串 */ public static boolean isArrayFormat ( String str) { return str!= null && JSON_ARRAY_PATTERN. matcher ( str) . matches ( ) ; } /** * 判断是否是数字数组字符串 */ public static boolean isNumberArrayString ( String str) { return str!= null && NUMBER_ARRAY_PATTERN. matcher ( str) . matches ( ) ; } /** * 判断是否是字符串数组字符串 */ public static boolean isStringArrayString ( String str) { return str!= null && STRING_ARRAY_PATTERN. matcher ( str) . matches ( ) ; } /** * 安全地将数组字符串转换为字符串数组 */ public static String [ ] parseToStringArray ( String arrayStr) { if ( ! isArrayFormat ( arrayStr) ) { throw new IllegalArgumentException ( "不是有效的数组格式字符串" ) ; } String content= arrayStr. trim ( ) . substring ( 1 , arrayStr. length ( ) - 1 ) // 去掉方括号 . trim ( ) ; if ( content. isEmpty ( ) ) { return new String [ 0 ] ; } // 处理引号和逗号 return content. split ( "\\s*,\\s*" ) ; } } 5.使用示例 public class Main { public static void main ( String [ ] args) { // 使用示例 String test1= "[1,2,3]" ; String test2= "[\"apple\",\"banana\"]" ; String test3= "1,2,3" ; String test4= "[]" ; String test5= "[1, 2, 3, ]" ; // 注意尾随逗号 System . out. println ( "test1 是JSON数组: " + ArrayStringChecker . isJsonArrayString ( test1) ) ; System . out. println ( "test2 是JSON数组: " + ArrayStringChecker . isJsonArrayString ( test2) ) ; System . out. println ( "test3 是JSON数组: " + ArrayStringChecker . isJsonArrayString ( test3) ) ; System . out. println ( "test4 是JSON数组: " + ArrayStringChecker . isJsonArrayString ( test4) ) ; System . out. println ( "test5 是JSON数组: " + ArrayStringChecker . isJsonArrayString ( test5) ) ; System . out. println ( "\n使用自定义分隔符检查:" ) ; System . out. println ( "test3 是逗号分隔数组: " + CustomArrayChecker . isCommaSeparatedArray ( test3) ) ; } }