$val) { $arr_out[] = '"' . addslashes($key) . '": ' . self::json_encode_pretty($val, $indentation, $level + 1); } return "{\n" . str_repeat(" ", ($level + 1)*$indentation) . implode(",\n".str_repeat(" ", ($level + 1)*$indentation), $arr_out) . "\n" . str_repeat(" ", $level*$indentation) . "}"; } else { $arr_out = array(); $ct = count($obj); for ($j = 0; $j < $ct; $j++) { $arr_out[] = self::json_encode_pretty($obj[$j], $indentation, $level + 1); } return "[\n" . str_repeat(" ", ($level + 1)*$indentation) . implode(",\n".str_repeat(" ", ($level + 1)*$indentation), $arr_out) . "\n" . str_repeat(" ", $level*$indentation) . "]"; } break; case 'NULL': return 'null'; break; case 'boolean': return $obj ? 'true' : 'false'; break; case 'integer': case 'double': return $obj; break; case 'string': default: $obj = str_replace(array('\\','"',), array('\\\\','\"'), $obj); return '"' . $obj . '"'; break; } } /* easy way to get the error message for the former json_encode PHP function */ public static function getLastJsonError() { switch (json_last_error()) { case JSON_ERROR_NONE: return false; break; case JSON_ERROR_DEPTH: return 'Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: return 'Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: return 'Unexpected control character found'; break; case JSON_ERROR_SYNTAX: return 'Syntax error, malformed JSON'; break; case JSON_ERROR_UTF8: return 'Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: return 'Unknown error'; break; } } } ?>