{"record":{"id":"6af3aace359ab034","repo":"karatelabs/karate","slug":"invalid-literal-expected-false","errorCode":null,"errorMessage":"Invalid literal — expected 'false'","messagePattern":"Invalid literal — expected 'false'","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"karate-js/src/main/java/io/karatelabs/js/JsonParser.java","lineNumber":335,"sourceCode":"                return v;\n            } catch (NumberFormatException nfe) {\n                return new BigInteger(lit);\n            }\n        }\n\n        private Boolean parseBoolean() {\n            if (s.charAt(pos) == 't') {\n                if (pos + 4 <= len && s.charAt(pos + 1) == 'r' && s.charAt(pos + 2) == 'u' && s.charAt(pos + 3) == 'e') {\n                    pos += 4;\n                    return Boolean.TRUE;\n                }\n                throw syntaxError(\"Invalid literal — expected 'true'\");\n            }\n            if (pos + 5 <= len && s.charAt(pos + 1) == 'a' && s.charAt(pos + 2) == 'l' && s.charAt(pos + 3) == 's' && s.charAt(pos + 4) == 'e') {\n                pos += 5;\n                return Boolean.FALSE;\n            }\n            throw syntaxError(\"Invalid literal — expected 'false'\");\n        }\n\n        private Object parseNull() {\n            if (pos + 4 <= len && s.charAt(pos + 1) == 'u' && s.charAt(pos + 2) == 'l' && s.charAt(pos + 3) == 'l') {\n                pos += 4;\n                return null;\n            }\n            throw syntaxError(\"Invalid literal — expected 'null'\");\n        }\n\n        void skipWs() {\n            while (pos < len) {\n                char c = s.charAt(pos);\n                if (c == ' ' || c == '\\t' || c == '\\n' || c == '\\r') {\n                    pos++;\n                } else {\n                    return;\n                }","sourceCodeStart":317,"sourceCodeEnd":353,"githubUrl":"https://github.com/karatelabs/karate/blob/a22eb90246d958d15a47bf436693d0121ad2812d/karate-js/src/main/java/io/karatelabs/js/JsonParser.java#L317-L353","documentation":"JsonParser.parseBoolean saw a token that is not the exact literal 'false' (and did not start with 't'). Any casing or spelling deviation — 'False', 'FALSE', 'fals', 'no' — is rejected because JSON defines booleans strictly.","triggerScenarios":"Parsing JSON containing 'False' (Python), 'FALSE' (SQL/CSV exports), 'no'/'off' (YAML-style booleans), or truncated text like '{\"ok\": fals}' in a value position dispatching to parseBoolean.","commonSituations":"YAML-to-JSON conversions where unquoted 'no' became an invalid literal; Python json dumps of raw bools via str(); hand-edited files with capitalized booleans; truncated payloads.","solutions":["Replace the literal with lowercase 'false'.","Regenerate the payload with a real JSON serializer so booleans are encoded correctly.","Pre-normalize boolean-ish strings ('no', 'off', 'FALSE') to JSON booleans when converting other formats.","Check for truncation if the literal looks like a prefix of 'false'."],"exampleFix":"// before\nString json = \"{\\\"debug\\\": FALSE}\";\n// after\nString json = \"{\\\"debug\\\": false}\";","handlingStrategy":"validation","validationCode":"// normalize non-JSON booleans before parsing\nraw = raw.replaceAll(\"\\\\bFalse\\\\b\", \"false\")\n         .replaceAll(\"\\\\bFALSE\\\\b\", \"false\")\n         .replaceAll(\"\\\\b(no|off)\\\\b(?=\\\\s*[:,}\\\\]])\", \"false\");","typeGuard":null,"tryCatchPattern":"// Java\ntry {\n    Json json = Json.of(raw);\n} catch (Exception e) {\n    if (String.valueOf(e.getMessage()).contains(\"expected 'false'\")) {\n        raw = raw.replaceAll(\"\\\\b(False|FALSE|no|off)\\\\b\", \"false\");\n    } else { throw e; }\n}","preventionTips":["Remember YAML-style 'no'/'off' are NOT valid JSON booleans.","Serialize via a JSON encoder so booleans are rendered correctly.","Watch for capitalized booleans from SQL/CSV/Python exports.","Check truncation if the token is a prefix like 'fals'."],"tags":["json","parser","boolean-literal","syntax-error"],"backgroundTag":"json-parse-error","analyzedSha":"a22eb90246d958d15a47bf436693d0121ad2812d","analyzedAt":"2026-09-12T09:01:00.220Z","contentChangedAt":"2026-09-12T09:01:00.220Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}