php json beautifier

php - ¿Cómo puedo embellecer JSON programáticamente?



beautifier (6)

Creé un embellecedor JSON no destructivo que admite varios niveles de profundidad.

/** * JSON beautifier * * @param string The original JSON string * @param string Return string * @param string Tab string * @return string */ function pretty_json($json, $ret= "/n", $ind="/t") { $beauty_json = ''''; $quote_state = FALSE; $level = 0; $json_length = strlen($json); for ($i = 0; $i < $json_length; $i++) { $pre = ''''; $suf = ''''; switch ($json[$i]) { case ''"'': $quote_state = !$quote_state; break; case ''['': $level++; break; case '']'': $level--; $pre = $ret; $pre .= str_repeat($ind, $level); break; case ''{'': if ($i - 1 >= 0 && $json[$i - 1] != '','') { $pre = $ret; $pre .= str_repeat($ind, $level); } $level++; $suf = $ret; $suf .= str_repeat($ind, $level); break; case '':'': $suf = '' ''; break; case '','': if (!$quote_state) { $suf = $ret; $suf .= str_repeat($ind, $level); } break; case ''}'': $level--; case '']'': $pre = $ret; $pre .= str_repeat($ind, $level); break; } $beauty_json .= $pre.$json[$i].$suf; } return $beauty_json; }

Podría decir que esto es un duplicado de esta pregunta , pero la pregunta original NO SE HA RESPONDIDO allí. Parte importante de la pregunta es: programmatically ?

¿Hay alguna función php? ¿Nativo o casero?


Este simple truco hizo el trabajo por mí, no quería bibliotecas ni funciones adicionales:

$json = ''{"status":"0","status_translated":"Request successful!","data":"1"}''; $json_beautified = str_replace(array("{", "}", ''","''), array("{<br />&nbsp;&nbsp;&nbsp;&nbsp;", "<br />}", ''",<br />&nbsp;&nbsp;&nbsp;&nbsp;"''), $json);

Y el resultado se ve así:

{ "status":"0", "status_translated":"Request successful!", "data":"1" }

Esto es solo para el código json que va 1 paso en profundidad, espero que ayude.




Tenía la misma pregunta en este momento. Pero como tu tambien tengo php <5.4. Zend Framework tiene Zend_Json :: prettyPrint (). Funciona muy bien


json_encode() tiene un indicador JSON_PRETTY_PRINT

echo json_encode($data, JSON_PRETTY_PRINT);