Expecting value: line L column C (char N)
This message comes from CPython json.loads on CPython 3.12.3. In this registry it is produced by 14 distinct mistakes. Positions in the real message vary with your input; the causes do not.
What produces this message
Bare minus sign where a number was expected
{"a": -}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Emit `null` or `0` when the value is missing, and check your template for an unsubstituted placeholder.
Bare unquoted word as a JSON document
helloExact message: Expecting value: line 1 column 1 (char 0)
Fix: Quote it: `"hello"` is a valid JSON document, `hello` is not.
Double comma in a JSON array
[1,,2]Exact message: Expecting value: line 1 column 4 (char 3)
Fix: Remove the extra comma, or write `null` if the empty slot is meaningful.
Empty string passed to a JSON parser
Exact message: Expecting value: line 1 column 1 (char 0)
Fix: Check for an empty body before parsing, and log the status code and content-length alongside it.
HTML received where JSON was expected
<!DOCTYPE html>
<html><body>500</body></html>Exact message: Expecting value: line 1 column 1 (char 0)
Fix: Check the HTTP status and the Content-Type header before parsing. Log the first 200 characters of the body when parsing fails so the actual page is visible in your logs.
Leading decimal point in a JSON number
{"a": .5}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Write `0.5`.
Leading plus sign in a JSON number
{"a": +1}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Drop the plus, or quote the value if the sign is meaningful text.
Python True / False / None in JSON
{"a": True, "b": None}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Serialise with `json.dumps()` rather than `str()`, `repr()`, or an f-string.
Whole JSON document wrapped in quotes
'{"a": 1}'Exact message: Expecting value: line 1 column 1 (char 0)
Fix: Parse twice, or fix the producer so it sends the object rather than a string containing the object.
Trailing comma in a JSON array
[1, 2, 3,]Exact message: Expecting value: line 1 column 10 (char 9)
Fix: Delete the comma before the closing bracket, or build the array with a join instead of manual concatenation.
undefined is not valid JSON
{"a": undefined}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Use `null` for an intentionally empty value, or omit the key entirely.
The literal string 'undefined' as a JSON document
undefinedExact message: Expecting value: line 1 column 1 (char 0)
Fix: Guard against undefined before sending, and send `JSON.stringify(value)` rather than a template literal.
Unquoted string value in JSON
{"a": hello}Exact message: Expecting value: line 1 column 7 (char 6)
Fix: Wrap the value in double quotes.
Whitespace-only input
Exact message: Expecting value: line 2 column 3 (char 6)
Fix: Treat whitespace-only as empty and handle it before parsing.
What other parsers say about the same input
If a colleague reports a different message for what looks like the same file, this is why.
| Parser | Message for the same inputs |
|---|---|
| Gson | Use JsonReader.setLenient(true) to accept malformed JSON at line L column C path $… |
| Gson JsonParser (lenient off) | Use JsonReader.setLenient(true) to accept malformed JSON at line L column C path $… |
| JSON5 | JSON5: invalid character ',' at 1:4JSON5: invalid character '<' at 1:1JSON5: invalid character 'T' at 1:7JSON5: invalid character 'h' at 1:1JSON5: invalid character 'h' at 1:7JSON5: invalid character 'u' at 1:1JSON5: invalid character 'u' at 1:7JSON5: invalid character '}' at 1:8JSON5: invalid end of input at 1:1JSON5: invalid end of input at 2:3 |
| JSON::PP | malformed JSON string, neither array, object, number, string or atom, at character offset N (before "…")malformed number (no digits after initial minus), at character offset N (before "…") |
| Jackson ObjectMapper | Unexpected character (''' (code 39)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unexpected character ('+' (code 43)) in numeric value: JSON spec does not allow numbers to have plus signs: enable `JsonReadFeature.ALLOW_LEADING_PLUS_SIGN_FOR_NUMBERS` to allowUnexpected character (',' (code 44)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unexpected character ('.' (code 46)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unexpected character ('<' (code 60)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unexpected character (']' (code 93)): expected a valid value (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unexpected character ('}' (code 125)) in numeric value: expected digit (0-9) to follow minus sign, for valid numeric valueUnrecognized token 'True': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unrecognized token 'hello': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false')Unrecognized token 'undefined': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false') |
| JavaScriptCore JSON.parse | JSON Parse error: Invalid numberJSON Parse error: Single quotes (') are not allowed in JSONJSON Parse error: Unexpected EOFJSON Parse error: Unexpected comma at the end of array expressionJSON Parse error: Unexpected identifier "True"JSON Parse error: Unexpected identifier "hello"JSON Parse error: Unexpected identifier "undefined"JSON Parse error: Unexpected token ','JSON Parse error: Unexpected token '.'JSON Parse error: Unrecognized token '+'JSON Parse error: Unrecognized token '<' |
| Newtonsoft.Json JsonConvert | Input string '-' is not a valid number. Path 'a', line L, position N.Unexpected character encountered while parsing value: +. Path 'a', line L, position N.Unexpected character encountered while parsing value: <. Path '', line L, position N.Unexpected character encountered while parsing value: T. Path 'a', line L, position N.Unexpected character encountered while parsing value: h. Path '', line L, position N.Unexpected character encountered while parsing value: h. Path 'a', line L, position N. |
| Newtonsoft.Json JsonTextReader | Input string '-' is not a valid number. Path 'a', line L, position N.Unexpected character encountered while parsing value: +. Path 'a', line L, position N.Unexpected character encountered while parsing value: <. Path '', line L, position N.Unexpected character encountered while parsing value: T. Path 'a', line L, position N.Unexpected character encountered while parsing value: h. Path '', line L, position N.Unexpected character encountered while parsing value: h. Path 'a', line L, position N. |
| Ruby JSON.parse | unexpected token at '…' |
| SpiderMonkey JSON.parse | JSON.parse: unexpected character at line L column C of the JSON dataJSON.parse: unexpected end of data at line L column C of the JSON dataJSON.parse: unexpected non-digit at line L column C of the JSON data |
| System.Text.Json Deserialize | ''' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'+' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.',' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'.' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'<' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'T' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'h' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'u' is an invalid start of a value. Path: $ | LineNumber: L | BytePositionInLine: C.'}' is invalid within a number, immediately after a sign character ('+' or '-'). Expected a digit ('0'-'9'). Path: $ | LineNumber: L | BytePositionInLine: C.The JSON array contains a trailing comma at the end which is not supported in this mode. Change the reader options. Path: $ | LineNumber: L | BytePositionInLine: C.The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: L | BytePositionInLine: C. |
| System.Text.Json JsonDocument | ''' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'+' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.',' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'.' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'<' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'T' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'h' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'u' is an invalid start of a value. LineNumber: L | BytePositionInLine: C.'}' is invalid within a number, immediately after a sign character ('+' or '-'). Expected a digit ('0'-'9'). LineNumber: L | BytePositionInLine: C.The JSON array contains a trailing comma at the end which is not supported in this mode. Change the reader options. LineNumber: L | BytePositionInLine: C.The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: L | BytePositionInLine: C. |
| V8 JSON.parse | "undefined" is not valid JSONNo number after minus sign in JSON at position N (line L column C)Unexpected end of JSON inputUnexpected token ''', "'{"a": 1}'" is not valid JSONUnexpected token '+', "{"a": +1}" is not valid JSONUnexpected token ',', "[1,,2]" is not valid JSONUnexpected token '.', "{"a": .5}" is not valid JSONUnexpected token '<', "…"... is not valid JSONUnexpected token 'T', "{"a": True, "b"…"... is not valid JSONUnexpected token ']', "[1, 2, 3,]" is not valid JSONUnexpected token 'h', "hello" is not valid JSONUnexpected token 'h', "{"a": hello}" is not valid JSONUnexpected token 'u', "{"a": undefined}" is not valid JSON |
| encoding/json Unmarshal | invalid character '+' looking for beginning of valueinvalid character ',' looking for beginning of valueinvalid character '.' looking for beginning of valueinvalid character '<' looking for beginning of valueinvalid character 'T' looking for beginning of valueinvalid character '\'' looking for beginning of valueinvalid character ']' looking for beginning of valueinvalid character 'h' looking for beginning of valueinvalid character 'u' looking for beginning of valueinvalid character '}' in numeric literalunexpected end of JSON input |
| hjson | End of input while parsing an object (missing '}') at line L,12End of input while parsing an object (missing '}') at line L,16End of input while parsing an object (missing '}') at line L,22End of input while parsing an object (missing '}') at line L,8End of input while parsing an object (missing '}') at line L,9Found EOF while looking for a key name (check your syntax) at line L,30Found a punctuator character ',' when expecting a quoteless string (check your syntax) at line L,3 |
| json-bigint | Bad numberUnexpected ''Unexpected '''Unexpected '+'Unexpected ','Unexpected '.'Unexpected '<'Unexpected 'T'Unexpected ']'Unexpected 'h'Unexpected 'u' |
| json_decode | Syntax error |
| orjson | Input is a zero-length, empty document: line L column C (char N)input data is empty: line L column C (char N)no digit after sign: line L column C (char N)trailing comma is not allowed: line L column C (char N)unexpected character, expected a JSON value: line L column C (char N) |
| serde_json::from_str | EOF while parsing a value at line L column Cexpected value at line L column Cinvalid number at line L column Ctrailing comma at line L column C |
| ujson | Expected object or valueUnexpected character found when decoding array value (1) |
Standards this registry is checked against
- RFC 8259 (STD 90) — The JavaScript Object Notation (JSON) Data Interchange Format, T. Bray, Ed., 2017. The IETF Internet Standard for JSON. Obsoletes RFC 7159 and RFC 4627.
- ECMA-404, 2nd edition — The JSON Data Interchange Syntax, Ecma International, 2017. Ecma’s grammar for JSON. A normative reference of RFC 8259; the two define the same syntax.
- The Unicode Standard — The Unicode Standard, Core Specification, The Unicode Consortium, current. Normatively referenced by RFC 8259 for the definition of a character.
- IEEE 754-2019 — IEEE Standard for Floating-Point Arithmetic, IEEE, 2019. Referenced by RFC 8259 §6 as the basis for its interoperability guidance on numbers.
Only standards bodies and peer-reviewed venues are cited. Error strings on this site are observed by executing each parser; the standards above define what the parser is reacting to.