* Copyright (c) 2007 Jorge Medrano. * * Licensed under The MIT License * Redistributions of files must retain the above copyright notice. * * @author Jorge Medrano * @copyright Copyright (c) 2007, Jorge Medrano * @link http://source.h1pp1e.net Source Projects * @version 0.0.1.26082007 * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ class json { /** * Converts a PHP variable into a valid JSON string. * @access public * @param string $var PHP variable * @return string JSON string. */ public static function encode($var){ $parsed = ""; switch (gettype($var)){ case "boolean": $parsed = ($var ? "true" : "false"); break; case "double": case "float": case "integer": $parsed = $var; break; case "string": $replacement = json::get_replacement(); $parsed = '"'; $var = str_replace($replacement["find"], $replacement["replace"], $var); $parsed .= $var; $parsed .= '"'; break; case "NULL": $parsed = "null"; break; case "array": if (!count($var) || array_keys($var) === range(0, count($var)-1)){ $array = array(); foreach ($var as $valor) { array_push($array, json::encode($valor)); } return "[" . implode(",", $array) . "]"; } else { $array = array(); foreach ($var as $key => $value) { array_push($array, json::encode(strval($key)) . ":" . json::encode($value)); } return "{" . implode(",", $array) . "}"; } break; case "object": null; break; default: $parsed = ''; break; } return $parsed; } /** * Replace the special characters for escape character * @access private * @return array */ private static function get_replacement(){ static $replacement = array("find" => array(), "replace" => array()); if ($replacement["find"] == array()) { foreach(array_merge(range(0, 7), array(11), range(14, 31)) as $v) { $replacement["find"][] = chr($v); $replacement["replace"][] = "\\u00".sprintf("%02x", $v); } $replacement["find"] = array_merge(array(chr(0x5c), chr(0x2F), chr(0x22), chr(0x0d), chr(0x0c), chr(0x0a), chr(0x09), chr(0x08)), $replacement["find"]); $replacement["replace"] = array_merge(array('\\\\', '\\/', '\\"', '\r', '\f', '\n', '\t', '\b'), $replacement["replace"]); } return $replacement; } } ?>