diff options
-rw-r--r-- | it.class | 16 | ||||
-rwxr-xr-x | tests/it.t | 3 |
2 files changed, 19 insertions, 0 deletions
@@ -1006,5 +1006,21 @@ static function pipe($cmd, $args = array()) return new it_pipe(is_string($cmd) ? array('cmd' => $cmd, 'args' => $args) : array('data' => $cmd)); } +/** + * Encodes data to json with unescaped slahes, unescape unicode and on devel pretty printing + */ +static function json_encode($data) +{ + return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | (it::is_devel() ? JSON_PRETTY_PRINT : 0)); +} + +/** + * Decodes json data and provides warning if failed + */ +static function json_decode($json) +{ + return ($data = json_decode($json)) === null && $json != 'null' ? it::error(array('title' => "invalid json", 'body' => $json)) : $data; +} + } ?> @@ -389,3 +389,6 @@ is(it::any2utf8("a💚b"), "a💚b", "it::any2utf8 correctly handles 4-byte utf- is(it::any2utf8(array("foo", utf8_decode("bär"))), array("foo", "bär"), "any2utf8 on arrays"); is(it::any2utf8(array("foo", array(utf8_decode("bär")))), array("foo", array("bär")), "any2utf8 on recursive arrays"); is(it::any2utf8(array(1, true, false, null)), array(1, true, false, null), "any2utf8 should leave types alone"); + +foreach (array($dummy, false, true, null, 1, "a", "Ä", "/", array()) as $var) + is(it::json_decode(it::json_encode($var)), $var); |