unexpected end of JSON input
This message comes from encoding/json Unmarshal on Go go1.22.2. In this registry it is produced by 5 distinct mistakes. Positions in the real message vary with your input; the causes do not.
What produces this message
Empty string passed to a JSON parser
Exact message: unexpected end of JSON input
Fix: Check for an empty body before parsing, and log the status code and content-length alongside it.
Unclosed array — unexpected end of JSON input
[1, 2Exact message: unexpected end of JSON input
Fix: Confirm the full body arrived before parsing.
Unclosed object — unexpected end of JSON input
{"a": 1Exact message: unexpected end of JSON input
Fix: Verify you received the whole payload. Compare the byte count against Content-Length, and check for proxy or log truncation.
Unterminated string in JSON
{"a": "hello}Exact message: unexpected end of JSON input
Fix: Escape internal double quotes as `\"`, and check that every string has a matching closing quote.
Whitespace-only input
Exact message: unexpected end of JSON input
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 |
|---|---|
| CPython json.loads | Expecting ',' delimiter: line L column C (char N)Expecting value: line L column C (char N)Unterminated string starting at: line L column C (char N) |
| Gson | Unterminated string at line L column C path $…java.io.EOFException: End of input at line L column C path $… |
| Gson JsonParser (lenient off) | Unterminated string at line L column C path $…java.io.EOFException: End of input at line L column C path $… |
| JSON5 | JSON5: invalid end of input at 1:1JSON5: invalid end of input at 1:14JSON5: invalid end of input at 1:6JSON5: invalid end of input at 1:8JSON5: invalid end of input at 2:3 |
| JSON::PP | , or ] expected while parsing array, at character offset N (before "…"), or } expected while parsing object/hash, at character offset N (before "…")malformed JSON string, neither array, object, number, string or atom, at character offset N (before "…")unexpected end of string while parsing JSON string, at character offset N (before "…") |
| Jackson ObjectMapper | Unexpected end-of-input: expected close marker for Array (start markerUnexpected end-of-input: expected close marker for Object (start markerUnexpected end-of-input: was expecting closing quote for a string value |
| JavaScriptCore JSON.parse | JSON Parse error: Expected ']'JSON Parse error: Expected '}'JSON Parse error: Unexpected EOFJSON Parse error: Unterminated string |
| Newtonsoft.Json JsonConvert | Unexpected end when deserializing object. Path 'a', line L, position N.Unterminated string. Expected delimiter: ". Path 'a', line L, position N. |
| Newtonsoft.Json JsonTextReader | Unterminated string. Expected delimiter: ". Path 'a', line L, position N. |
| Ruby JSON.parse | unexpected token at '…' |
| SpiderMonkey JSON.parse | JSON.parse: end of data after property value in object at line L column C of the JSON dataJSON.parse: end of data when ',' or ']' was expected at line L column C of the JSON dataJSON.parse: unexpected end of data at line L column C of the JSON dataJSON.parse: unterminated string at line L column C of the JSON data |
| System.Text.Json Deserialize | '1' is an invalid end of a number. Expected a delimiter. Path: $ | LineNumber: L | BytePositionInLine: C.'2' is an invalid end of a number. Expected a delimiter. Path: $ | LineNumber: L | BytePositionInLine: C.Expected end of string, but instead reached end of data. 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 | '1' is an invalid end of a number. Expected a delimiter. LineNumber: L | BytePositionInLine: C.'2' is an invalid end of a number. Expected a delimiter. LineNumber: L | BytePositionInLine: C.Expected end of string, but instead reached end of data. 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 | Expected ',' or ']' after array element in JSON at position N (line L column C)Expected ',' or '}' after property value in JSON at position N (line L column C)Unexpected end of JSON inputUnterminated string in JSON at position N (line L column C) |
| hjson | Bad string at line L,13End of input while parsing an array (missing ']') at line L,5End of input while parsing an object (missing '}') at line L,7 |
| json-bigint | Bad stringExpected ',' instead of ''Unexpected '' |
| json_decode | Control character error, possibly incorrectly encodedSyntax 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)unexpected end of data: line L column C (char N) |
| serde_json::from_str | EOF while parsing a list at line L column CEOF while parsing a string at line L column CEOF while parsing a value at line L column CEOF while parsing an object at line L column C |
| ujson | Expected object or valueUnexpected character found when decoding array value (2)Unexpected character in found when decoding object valueUnmatched '"' when decoding 'string' |
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.