{"record":{"id":"d56da8b82d0837fe","repo":"json-path/JsonPath","slug":"invalidjsonexception-d56da8","errorCode":null,"errorMessage":"InvalidJsonException","messagePattern":"InvalidJsonException","errorType":"exception","errorClass":"InvalidJsonException","httpStatus":null,"severity":"error","filePath":"json-path/src/main/java/com/jayway/jsonpath/spi/json/JakartaJsonProvider.java","lineNumber":95,"sourceCode":"        throws InvalidJsonException {\r\n        return parse(new InputStreamReader(new ByteArrayInputStream(json), StandardCharsets.UTF_8));\r\n    }\r\n\r\n    @Override\r\n    public Object parse(InputStream jsonStream, String charset) throws InvalidJsonException {\r\n        try {\r\n            return parse(new InputStreamReader(jsonStream, charset));\r\n        } catch (UnsupportedEncodingException e) {\r\n            throw new JsonPathException(e);\r\n        }\r\n    }\r\n\r\n  private Object parse(Reader jsonInput) {\r\n    try (JsonReader jsonReader = defaultJsonProvider.createReader(jsonInput)) {\r\n        JsonStructure jsonStruct = jsonReader.read();\r\n        return mutableJson ? proxyAll(jsonStruct) : jsonStruct;\r\n    } catch (JsonParsingException e) {\r\n        throw new InvalidJsonException(e);\r\n    }\r\n    // not catching a JsonException as it never happens here\r\n  }\r\n\r\n    @Override\r\n    public String toJson(Object obj) {\r\n        if (obj instanceof JsonObjectBuilder) {\r\n            obj = ((JsonObjectBuilder) obj).build();\r\n        } else if (obj instanceof JsonArrayBuilder) {\r\n            obj = ((JsonArrayBuilder) obj).build();\r\n        } else if (obj instanceof List) {\r\n            obj = jsonBuilderFactory.createArrayBuilder((Collection<?>) obj).build();\r\n        }\r\n        return obj.toString();\r\n    }\r\n\r\n    @Override\r\n    public Object createArray() {\r","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/json-path/JsonPath/blob/62a4c9f0f65ba3f625aa0867d64c528ba72d09ec/json-path/src/main/java/com/jayway/jsonpath/spi/json/JakartaJsonProvider.java#L77-L113","documentation":"In JakartaJsonProvider's Reader-based parse, the JSON-P JsonReader.read() throws JsonParsingException when the input is not well-formed JSON; the provider converts that into InvalidJsonException. It signals genuinely malformed JSON content reaching the parser.","triggerScenarios":"JsonPath.parse(String/Reader) with this provider where the document has syntax errors: missing brackets, unquoted keys, trailing commas, or non-JSON content such as XML or HTML.","commonSituations":"Consuming an API response that returned an error page, copy-pasted JSON with smart quotes, concatenated JSON documents, or truncated files.","solutions":["Validate the JSON string with a linter/parser before passing it to JsonPath.","Check the upstream source actually returns application/json and not an error body.","Catch InvalidJsonException and log the wrapped JsonParsingException which includes line/column of the failure."],"exampleFix":"// before\nObject doc = JsonPath.parse(responseBody);\n// after\ntry {\n    Object doc = JsonPath.parse(responseBody);\n} catch (InvalidJsonException e) {\n    LOG.error(\"Bad JSON at \" + e.getCause().getMessage());\n}","handlingStrategy":"try-catch","validationCode":"// Java\ntry { Json.createReader(new StringReader(payload)).read(); return true; } catch (JsonParsingException e) { return false; }","typeGuard":null,"tryCatchPattern":"try { Object doc = JsonPath.parse(payload); } catch (InvalidJsonException e) { JsonParsingException p = (JsonParsingException) e.getCause(); /* p.getLocation() has line/column */ }","preventionTips":["Validate JSON before parsing","Confirm upstream API returns application/json","Watch for HTML error pages and truncated bodies","Log the wrapped JsonParsingException location on failure"],"tags":["json","parsing","json-p","invalid-json"],"backgroundTag":"json-parse-error","analyzedSha":"62a4c9f0f65ba3f625aa0867d64c528ba72d09ec","analyzedAt":"2026-09-11T11:36:00.448Z","contentChangedAt":"2026-09-11T11:36:00.448Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}