Koncová čárka v JSON: Expected double-quoted property name

JSON nepovoluje čárku za poslední položkou objektu ani pole (trailing comma). V8 v Node.js a Chromu to u objektu hlásí jako Expected double-quoted property name in JSON, protože po čárce čeká další klíč, u pole jako Unexpected token ']'. Python 3.14 píše přímo Illegal trailing comma, Python 3.9 Expecting property name enclosed in double quotes.

Autor: Aktualizováno

Znění hlášky v jednotlivých prostředích

Většina parserů koncovou čárku nepojmenuje. Hlásí až to, co po ní chybí: název další vlastnosti nebo další hodnotu.

Parser Hláška Kdy
Node.js 25, Chrome 153 (V8) JSON.parse, response.json(), Edge a další prohlížeče s V8 Expected double-quoted property name in JSON at position 8 (line 1 column 9) Čárka za poslední položkou objektu
Unexpected token ']', "[1, 2,]" is not valid JSON Čárka za posledním prvkem pole
Firefox 158 JSON.parse, response.json() JSON.parse: expected double-quoted property name at line 1 column 9 of the JSON data Čárka za poslední položkou objektu
JSON.parse: unexpected character at line 1 column 7 of the JSON data Čárka za posledním prvkem pole
Safari (WebKit 26) JSON.parse, response.json() JSON Parse error: Property name must be a string literal Čárka za poslední položkou objektu
JSON Parse error: Unexpected comma at the end of array expression Čárka za posledním prvkem pole
Python 3.14 json.loads, json.load (json.JSONDecodeError) Illegal trailing comma before end of object: line 1 column 8 (char 7) Čárka za poslední položkou objektu
Illegal trailing comma before end of array: line 1 column 6 (char 5) Čárka za posledním prvkem pole
Python 3.9 starší verze, např. systémový Python v macOS Expecting property name enclosed in double quotes: line 1 column 9 (char 8) Čárka za poslední položkou objektu
Expecting value: line 1 column 7 (char 6) Čárka za posledním prvkem pole
.NET 10 (System.Text.Json) JsonDocument.Parse, JsonSerializer.Deserialize The JSON object contains a trailing comma at the end which is not supported in this mode. Čárka za poslední položkou objektu
The JSON array contains a trailing comma at the end which is not supported in this mode. Čárka za posledním prvkem pole
PHP 8.4 json_last_error_msg(), JsonException s JSON_THROW_ON_ERROR Syntax error Čárka za poslední položkou objektu, Čárka za posledním prvkem pole

Hláška Expected double-quoted property name proto nemusí znamenat klíč bez uvozovek. Podívej se na znak před hlášenou pozicí: pokud je to čárka a za ní }, jde o koncovou čárku. .NET nabízí AllowTrailingCommas v JsonDocumentOptions a JsonSerializerOptions. To je rozšíření parseru, ne standardní JSON.

Příčiny a opravy

Čárka za poslední položkou objektu

Chybně
{"a": 1,}
Opraveno
{"a": 1}

Čárka v JSON odděluje položky, ne ukončuje. Nejčastěji vznikne ručním skládáním řetězce nebo smazáním poslední položky v editoru. Použij serializátor místo skládání řetězců. Regulární výraz na odstranění čárek může poškodit obsah řetězců.

Čárka za posledním prvkem pole

Chybně
[1, 2,]
Opraveno
[1, 2]

U pole hlásí V8 i Firefox neočekávaný znak ] a WebKit přímo čárku na konci pole. Starší Python čeká další hodnotu, proto píše Expecting value, stejně jako u prázdného vstupu.

Když stejný soubor funguje v editoru, ale selže v API

Editor může číst konfiguraci podle pravidel JSONC, zatímco server očekává JSON. Přijetí souboru editorem tedy není ověření formátu pro API. Zjisti, který program soubor vytváří, a nech jej vypsat standardní JSON. JSON5 a JSONC koncové čárky povolují, ale API požadující standardní JSON se jimi neřídí.

Čárky uvnitř uvozovek jsou součástí textu a musí zůstat zachované. Po opravě poslední čárky zkontroluj i komentáře, jednoduché uvozovky a neuzavřené závorky. Rozdíly vysvětluje JSON, JSON5 a JSONC.