/lib/Elastica/JSON.php
PHP | 66 lines | 27 code | 9 blank | 30 comment | 4 complexity | 1535a8bda6e7fc417cfb3ae28e5e9602 MD5 | raw file
- <?php
- namespace Elastica;
- use Elastica\Exception\JSONParseException;
- /**
- * Elastica JSON tools.
- */
- class JSON
- {
- /**
- * Parse JSON string to an array.
- *
- * @link http://php.net/manual/en/function.json-decode.php
- * @link http://php.net/manual/en/function.json-last-error.php
- *
- * @param string $json JSON string to parse
- *
- * @return array PHP array representation of JSON string
- */
- public static function parse(/* inherit from json_decode */)
- {
- // extract arguments
- $args = func_get_args();
- // default to decoding into an assoc array
- if (count($args) === 1) {
- $args[] = true;
- }
- // run decode
- $array = call_user_func_array('json_decode', $args);
- // turn errors into exceptions for easier catching
- $error = json_last_error();
- if ($error !== JSON_ERROR_NONE) {
- throw new JSONParseException($error);
- }
- // output
- return $array;
- }
- /**
- * Convert input to JSON string with standard options.
- *
- * @link http://php.net/manual/en/function.json-encode.php
- *
- * @param mixed check args for PHP function json_encode
- *
- * @return string Valid JSON representation of $input
- */
- public static function stringify(/* inherit from json_encode */)
- {
- // extract arguments
- $args = func_get_args();
- // allow special options value for Elasticsearch compatibility
- if (count($args) > 1 && $args[1] === 'JSON_ELASTICSEARCH') {
- $args[1] = JSON_UNESCAPED_UNICODE;
- }
- // run encode and output
- return call_user_func_array('json_encode', $args);
- }
- }