{"record":{"id":"31e837a02907110e","repo":"redis/jedis","slug":"unknown-type-str","errorCode":null,"errorMessage":"Unknown type: ${str}","messagePattern":"Unknown type: (.+?)","errorType":"exception","errorClass":"JedisException","httpStatus":null,"severity":"error","filePath":"src/main/java/redis/clients/jedis/json/JsonBuilderFactory.java","lineNumber":37,"sourceCode":"      if (data == null) return null;\n      String str = STRING.build(data);\n      switch (str) {\n        case \"null\":\n          return null;\n        case \"boolean\":\n          return boolean.class;\n        case \"integer\":\n          return int.class;\n        case \"number\":\n          return float.class;\n        case \"string\":\n          return String.class;\n        case \"object\":\n          return Object.class;\n        case \"array\":\n          return List.class;\n        default:\n          throw new JedisException(\"Unknown type: \" + str);\n      }\n    }\n\n    @Override\n    public String toString() {\n      return \"Class<?>\";\n    }\n  };\n\n  public static final Builder<List<Class<?>>> JSON_TYPE_LIST = new Builder<List<Class<?>>>() {\n    @Override\n    public List<Class<?>> build(Object data) {\n      List<Object> list = (List<Object>) data;\n      List<Class<?>> classes = new ArrayList<>(list.size());\n      for (Object elem : list) {\n        try {\n          classes.add(JSON_TYPE.build(elem));\n        } catch (JedisException je) {","sourceCodeStart":19,"sourceCodeEnd":55,"githubUrl":"https://github.com/redis/jedis/blob/6dac31d4c224fb3257c216f3985340c6f500cdcb/src/main/java/redis/clients/jedis/json/JsonBuilderFactory.java#L19-L55","documentation":"JsonBuilderFactory's type converter only maps a fixed set of JSON schema type names (string, integer, number, boolean, object, array) to Java classes. An unrecognized name throws JedisException(\"Unknown type: ...\").","triggerScenarios":"Calling build()/the type-mapping method with a schema type string not in the supported set, e.g. \"null\", \"any\", \"float\", or an uppercase/wrongly-spelled type name like \"String\" or \"arry\".","commonSituations":"Feeding a JSON schema with non-standard type names; hand-written schemas with typos; schema versions using type names the factory doesn't know.","solutions":["Use only supported type names: string, integer, number, boolean, object, array","Fix typos and casing in the schema type field","Pre-validate the schema's type values before passing to JsonBuilderFactory"],"exampleFix":"// before\n{\"type\": \"float\"}\n// after\n{\"type\": \"number\"}","handlingStrategy":"validation","validationCode":"Set<String> allowed = Set.of(\"string\",\"integer\",\"number\",\"boolean\",\"object\",\"array\");\nif (!allowed.contains(schemaType)) { throw new IllegalArgumentException(\"unsupported schema type: \" + schemaType); }","typeGuard":null,"tryCatchPattern":"try { Class<?> c = JsonBuilderFactory...build(str); } catch (JedisException e) { log.error(\"Unknown schema type: {}\", str); throw new IllegalArgumentException(e); }","preventionTips":["Use only lowercase RedisJSON-style type names in schemas","Validate schemas before passing them to the factory","Keep schema generation and factory versions in sync"],"tags":["json","schema","unknown-type","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"6dac31d4c224fb3257c216f3985340c6f500cdcb","analyzedAt":"2026-09-08T04:55:01.204Z","contentChangedAt":"2026-09-08T04:55:01.204Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}