diff options
author | Andreas Gohr <andi@splitbrain.org> | 2010-11-18 22:42:42 +0100 |
---|---|---|
committer | Andreas Gohr <andi@splitbrain.org> | 2010-11-18 22:42:42 +0100 |
commit | dc9bdeadf4b4eeacd7b6c7a51269a4400e4d25d8 (patch) | |
tree | 614e2e6afd77fbc7c0ece4df9904db93b9ed309d | |
parent | 430d05b058ac3df435600a678cda365dba3eb1b7 (diff) | |
download | rpg-dc9bdeadf4b4eeacd7b6c7a51269a4400e4d25d8.tar.gz rpg-dc9bdeadf4b4eeacd7b6c7a51269a4400e4d25d8.tar.bz2 |
Improve native JSON usage
This patch does two things: It makes sure the native json_decode() will
honor the JSON_LOOSETYPE option of the class and it also adds way
to skip the use of the native function completely. The latter is
necessary for slightly non-standard JSON data.
-rw-r--r-- | inc/JSON.php | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/inc/JSON.php b/inc/JSON.php index d1fbd404a..2dea44003 100644 --- a/inc/JSON.php +++ b/inc/JSON.php @@ -112,6 +112,16 @@ define('JSON_STRICT_TYPE', 11); * @deprecated */ class JSON { + + /** + * Disables the use of PHP5's native json_decode() + * + * You shouldn't change this usually because the native function is much + * faster. However, this non-native will also parse slightly broken JSON + * which might be handy when talking to a non-conform endpoint + */ + public $skipnative = false; + /** * constructs a new JSON instance * @@ -366,7 +376,10 @@ class JSON { * @access public */ function decode($str) { - if (function_exists('json_decode')) return json_decode($str); + if (!$this->skipnative && function_exists('json_decode')){ + return json_decode($str,($this->use == JSON_LOOSE_TYPE)); + } + $str = $this->reduce_string($str); switch (strtolower($str)) { |