MediaWiki
master
|
JSON formatter wrapper class. More...
Static Public Member Functions | |
static | decode ( $value, $assoc=false) |
Decodes a JSON string. More... | |
static | encode ( $value, $pretty=false, $escaping=0) |
Returns the JSON representation of a value. More... | |
static | parse ( $value, $options=0) |
Decodes a JSON string. More... | |
static | stripComments ( $json) |
Remove multiline and single line comments from an otherwise valid JSON input string. More... | |
Public Attributes | |
const | ALL_OK = self::UTF8_OK | self::XMLMETA_OK |
Skip escaping as many characters as reasonably possible. More... | |
const | FORCE_ASSOC = 0x100 |
If set, treat JSON objects '{...}' as associative arrays. More... | |
const | STRIP_COMMENTS = 0x400 |
If set, strip comments from input before parsing as JSON. More... | |
const | TRY_FIXING = 0x200 |
If set, attempt to fix invalid JSON. More... | |
const | UTF8_OK = 1 |
Skip escaping most characters above U+007F for readability and compactness. More... | |
const | XMLMETA_OK = 2 |
Skip escaping the characters '<', '>', and '&', which have special meanings in HTML and XML. More... | |
Private Attributes | |
const | BAD_CHARS |
Characters problematic in JavaScript. More... | |
const | BAD_CHARS_ESCAPED |
Escape sequences for characters listed in FormatJson::BAD_CHARS. More... | |
JSON formatter wrapper class.
Definition at line 26 of file FormatJson.php.
|
static |
Decodes a JSON string.
It is recommended to use FormatJson::parse(), which returns more comprehensive result in case of an error, and has more parsing options.
In PHP versions before 7.1, decoding a JSON string containing an empty key without passing $assoc as true results in a return object with a property named "_empty_" (because true empty properties were not supported pre-PHP-7.1). Instead, consider passing $assoc as true to return an associative array.
But be aware that in all supported PHP versions, decoding an empty JSON object with $assoc = true returns an array, not an object, breaking round-trip consistency.
See https://phabricator.wikimedia.org/T206411 for more details on these quirks.
string | $value | The JSON string being decoded |
bool | $assoc | When true, returned objects will be converted into associative arrays. |
null
is returned if $value represented null
, if $value could not be decoded, or if the encoded data was deeper than the recursion limit. Use FormatJson::parse() to distinguish between types of null
and to get proper error code. Definition at line 174 of file FormatJson.php.
Referenced by GitInfo\__construct(), BotPassword\__construct(), ChangesListSpecialPage\considerActionsForDefaultSavedQuery(), UpdateExtensionJsonSchema\execute(), ForeignAPIRepo\fetchImageQuery(), ImportSiteScripts\fetchScriptList(), AutoloadGenerator\generateJsonAutoload(), MediaWiki\Storage\EditResultCache\get(), CommentStore\getCommentInternal(), MediaWiki\Rest\Handler\UpdateHandler\getDiff(), Language\getGrammarTransformations(), ForeignAPIRepo\getInfo(), MWRestrictions\newFromJson(), MediaWiki\Site\MediaWikiPageNameNormalizer\normalizePageName(), SwiftFileBackend\objectListing(), and LocalisationCache\readJSONFile().
|
static |
Returns the JSON representation of a value.
mixed | $value | The value to encode. Can be any type except a resource. |
string | bool | $pretty | If a string, add non-significant whitespace to improve readability, using that string for indentation. If true, use the default indent string (four spaces). |
int | $escaping | Bitfield consisting of _OK class constants |
Definition at line 115 of file FormatJson.php.
References UTF8_OK, and XMLMETA_OK.
Referenced by JsonContent\beautifyJSON(), ApiFormatBase\closePrinter(), CommentStore\createComment(), FileBackendMultiWrite\doOperationsInternal(), FileBackendStore\doOperationsInternal(), Xml\encodeJsVar(), SpecialRunJobs\execute(), ApiExpandTemplates\execute(), ApiFormatJson\execute(), ApiHelp\execute(), ApiParse\execute(), WebInstallerName\execute(), ConvertExtensionToRegistration\execute(), GetConfiguration\execute(), ListVariants\execute(), RunJobs\execute(), UpdateExtensionJsonSchema\execute(), JSONRCFeedFormatter\formatArray(), AutoloadGenerator\generateJsonAutoload(), MessageBlobStore\generateMessageBlob(), HTMLAutoCompleteSelectField\getAttributes(), HTMLTitleTextField\getDataAttribs(), HTMLFormField\getDiv(), HTMLFormField\getHelpTextHtmlDiv(), HTMLFormField\getHelpTextHtmlTable(), HTMLCheckMatrix\getTableRow(), HTMLFormField\getTableRow(), MWExceptionHandler\jsonSerializeException(), FileOp\logFailure(), MediaWiki\Storage\RevertedTagUpdate\markAsReverted(), BotPassword\newUnsaved(), SwiftFileBackend\onError(), Pingback\postPingback(), GitInfo\precomputeValues(), JsonContent\primitiveValue(), FileBackendMultiWrite\resyncFiles(), BotPassword\save(), RecentChange\save(), MediaWiki\Json\JsonCodec\serialize(), MediaWiki\Storage\EditResultCache\set(), MWRestrictions\toJson(), Job\toString(), and GenerateJsonI18n\transformI18nFile().
|
static |
Decodes a JSON string.
Unlike FormatJson::decode(), if $value represents null value, it will be properly decoded as valid.
string | $value | The JSON string being decoded |
int | $options | A bit field that allows FORCE_ASSOC, TRY_FIXING, STRIP_COMMENTS |
Definition at line 188 of file FormatJson.php.
References FORCE_ASSOC, StatusValue\newFatal(), StatusValue\newGood(), stripComments(), and wfMessage().
Referenced by JsonContent\getData(), ApiCSPReport\getReport(), MediaWiki\Json\JsonCodec\unserialize(), and MediaWiki\Rest\Validator\JsonBodyValidator\validateBody().
|
static |
Remove multiline and single line comments from an otherwise valid JSON input string.
This can be used as a preprocessor, to allow JSON formatted configuration files to contain comments.
string | $json |
Definition at line 256 of file FormatJson.php.
Referenced by parse().
const FormatJson::ALL_OK = self::UTF8_OK | self::XMLMETA_OK |
Skip escaping as many characters as reasonably possible.
Definition at line 55 of file FormatJson.php.
Referenced by ApiFormatBase\closePrinter(), CommentStore\createComment(), ApiExpandTemplates\execute(), ApiFormatJson\execute(), ApiParse\execute(), ConvertExtensionToRegistration\execute(), UpdateExtensionJsonSchema\execute(), AutoloadGenerator\generateJsonAutoload(), MWExceptionHandler\logError(), MWExceptionHandler\logException(), MediaWiki\Json\JsonCodec\serialize(), MWRestrictions\toJson(), and GenerateJsonI18n\transformI18nFile().
|
private |
Characters problematic in JavaScript.
Definition at line 85 of file FormatJson.php.
|
private |
Escape sequences for characters listed in FormatJson::BAD_CHARS.
Definition at line 93 of file FormatJson.php.
const FormatJson::FORCE_ASSOC = 0x100 |
If set, treat JSON objects '{...}' as associative arrays.
Without this option, JSON objects will be converted to stdClass.
Definition at line 63 of file FormatJson.php.
Referenced by MediaWiki\Rest\Handler\UpdateHandler\getDiff(), ApiCSPReport\getReport(), parse(), MediaWiki\Json\JsonCodec\unserialize(), and MediaWiki\Rest\Validator\JsonBodyValidator\validateBody().
const FormatJson::STRIP_COMMENTS = 0x400 |
If set, strip comments from input before parsing as JSON.
Definition at line 77 of file FormatJson.php.
const FormatJson::TRY_FIXING = 0x200 |
const FormatJson::UTF8_OK = 1 |
Skip escaping most characters above U+007F for readability and compactness.
This encoding option saves 3 to 8 bytes (uncompressed) for each such character; however, it could break compatibility with systems that incorrectly handle UTF-8.
Definition at line 34 of file FormatJson.php.
Referenced by JsonContent\beautifyJSON(), encode(), Xml\encodeJsVar(), ApiHelp\execute(), and MessageBlobStore\generateMessageBlob().
const FormatJson::XMLMETA_OK = 2 |
Skip escaping the characters '<', '>', and '&', which have special meanings in HTML and XML.
Definition at line 46 of file FormatJson.php.
Referenced by encode(), and ApiFormatJson\execute().