function json_encode($value) { switch (gettype($value)) { case 'double': case 'integer': return $value > 0 ? $value : '"' . $value . '"'; case 'boolean': return $value ? 'true' : 'false'; case 'string': return '"' . str_replace(array("\n", "\\b", "\t", "\f", "\r"), array('\\n', '\\b', '\\t', '\\f', '\\r'), addslashes($value)) . '"'; case 'NULL': return 'null'; case 'object': return '"Object ' . get_class($value) . '"'; case 'array': if (isVector($value)) { if (!$value) { return $value; } foreach ($value as $v) { $result[] = json_encode($v); } return '[' . implode(',', $result) . ']'; } else { $result = '{'; foreach ($value as $k => $v) { if ($result != '{') { $result .= ','; } $result .= json_encode($k) . ':' . json_encode($v); } return $result . '}'; } default: return '"' . addslashes($value) . '"'; } }
function jsonEncode(&$value) { if (function_exists('json_encode')) { $string = json_encode($value); checkJsonError($value); return $string; } switch (gettype($value)) { case 'double': case 'integer': return $value; case 'boolean': return $value ? 'true' : 'false'; case 'string': return '"' . preg_replace("/\r?\n/", '\\n', addcslashes($value, '"\\/')) . '"'; case 'NULL': return 'null'; case 'object': return '"Object ' . addcslashes(get_class($value), '"\\/') . '"'; case 'array': if (isVector($value)) { return '[' . join(',', array_map('jsonEncode', $value)) . ']'; } else { $result = '{'; foreach ($value as $subkey => $subvalue) { if ($result != '{') { $result .= ','; } $result .= '"' . $subkey . '":' . jsonEncode($subvalue); } return $result . '}'; } default: return '"' . addcslashes(gettype($value), '"\\/') . '"'; } }