您必须在运行时检查值的类型。您可以使用
Map<String, Object>或使用
JsonNode。
Map
JsonParser parser = JsonParserFactory.getJsonParser();Map<String, Object> map = parser.parseMap(str);Object filterValue = filter.get("<column_name>");if (filterValue instanceof String) { // str is like "{"<column_name>":"<value>"}"} else if (filterValue instanceof Collection) { for (Object arrayValue : (Collection<Object>) filterValue) { if (arrayValue instanceof String) { // str is like "{"<column_name>":["<value1>","<value2>"]}" } else if (arrayValue instanceof Map) { // str is like "{"<column_name>":[{"operator":"eq","value":"<value>"}]}" } }}JsonNode
ObjectMapper mapper = new ObjectMapper();JsonNode filter = mapper.readTree(str);JsonNode filterValue = filter.get("<column_name>");if (filterValue.isTextual()) { // str is like "{"<column_name>":"<value>"}"} else if (filterValue.isArray()) { for (JsonNode arrayValue : filterValue.elements()) { if (arrayValue.isTextual()) { // str is like "{"<column_name>":["<value1>","<value2>"]}" } else if (arrayValue.isObject()) { // str is like "{"<column_name>":[{"operator":"eq","value":"<value>"}]}" } }}


