. */ namespace SP\Util; use SP\Core\Exceptions\SPException; use SP\Http\JsonResponse; /** * Class Json con utilidades para JSON * * @package SP\Util */ class Json { /** * Devuelve una respuesta en formato JSON con el estado y el mensaje. * * @param JsonResponse $json * @return bool * @throws \SP\Core\Exceptions\SPException */ public static function returnJson(JsonResponse $json) { header('Content-type: application/json'); exit(self::getJson($json)); } /** * Devuelve una cadena en formato JSON * * @param $data * @return string La cadena en formato JSON * @throws \SP\Core\Exceptions\SPException */ public static function getJson($data) { $json = json_encode($data); if ($json === false) { throw new SPException(SPException::SP_CRITICAL, __('Error de codificación', false), json_last_error_msg()); } return $json; } /** * Devuelve un array con las cadenas formateadas para JSON * * @param $data mixed * @return mixed */ public static function safeJson(&$data) { if (is_array($data) || is_object($data)) { array_walk_recursive($data, function (&$value) { if (is_object($value)) { foreach ($value as &$attribute) { if (is_string($attribute) && $attribute !== '') { self::safeJsonString($attribute); } } return $value; } elseif (is_string($value) && $value !== '') { return self::safeJsonString($value); } else { return $value; } } ); } elseif (is_string($data) && $data !== '') { return self::safeJsonString($data); } return $data; } /** * Devuelve una cadena con los carácteres formateadas para JSON * * @param $string * @return mixed */ public static function safeJsonString(&$string) { $strFrom = ['\\', '"', '\'']; $strTo = ['\\', '\"', '\\\'']; $string = str_replace($strFrom, $strTo, $string); return $string; } }