[php-src] PR #23336: JSON: Add opt-in comments and trailing comma flags

From: Date: Mon, 17 Aug 2026 17:07:55 +0000
Subject: [php-src] PR #23336: JSON: Add opt-in comments and trailing comma flags
Groups: php.git-pulls 
Request: Send a blank email to git-pulls+get-37949@lists.php.net to get a copy of this message
Pull Request: https://github.com/php/php-src/pull/23336 Author: otar Configuration files often use a narrow JSON extension with JS-style comments, trailing commas, or both. PHP currently requires a separate parser or a string-aware preprocessing pass. This PR adds native parser support. Strict JSON remains the default. ## Public API | Constant | Value | Accepted by | Effect | | --- | ---: | --- | --- | | JSON_ALLOW_COMMENTS | 1 << 23 | json_decode(), json_validate() | Allows // and non-nesting /* ... */ comments at JSON whitespace boundaries. | | JSON_ALLOW_TRAILING_COMMAS | 1 << 24 | json_decode(), json_validate() | Allows one final comma in a nonempty array or object. | The flags are independent. Neither flag applies to json_encode() or is enabled by default. ## Semantics - Line comments end at LF, CRLF, lone CR, or EOF. Block comments do not nest and end at the first */. - Comments are allowed before and after the root value and between tokens. They are not allowed inside a token. Comment-like text in a JSON string is unchanged. - U+2028/U+2029 and valid controls, including embedded NUL, are comment content. Malformed UTF-8 follows the existing decode flags. Validation still accepts JSON_INVALID_UTF8_IGNORE, but not JSON_INVALID_UTF8_SUBSTITUTE. - Unterminated block comments produce JSON_ERROR_SYNTAX at the opening slash. - A trailing comma is allowed only after the last element or member of a nonempty container. Empty or missing-element forms such as [,], {,}, and [1,,] remain invalid. - The implementation retains existing behavior for depth, duplicate keys, bigints, associative objects, exceptions, error codes, and original-input line and column numbers.

« previous php.git-pulls (#37949) next »