Created
August 26, 2014 16:47
-
-
Save dgoguerra/767ba731fe6613f6a2f8 to your computer and use it in GitHub Desktop.
json prettify in PHP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Indents a flat JSON string to make it more human-readable. | |
* | |
* http://www.daveperrett.com/articles/2008/03/11/format-json-with-php/ | |
*/ | |
function json_indent($json) | |
{ | |
$result = ''; | |
$pos = 0; | |
$strLen = strlen($json); | |
$indentStr = ' '; | |
$newLine = "\n"; | |
$prevChar = ''; | |
$outOfQuotes = true; | |
for ($i=0; $i<=$strLen; $i++) | |
{ | |
// Grab the next character in the string. | |
$char = substr($json, $i, 1); | |
// Are we inside a quoted string? | |
if ($char == '"' && $prevChar != '\\') { | |
$outOfQuotes = !$outOfQuotes; | |
// If this character is the end of an element, | |
// output a new line and indent the next line. | |
} else if(($char == '}' || $char == ']') && $outOfQuotes) { | |
$result .= $newLine; | |
$pos --; | |
for ($j=0; $j<$pos; $j++) { | |
$result .= $indentStr; | |
} | |
} | |
// Add the character to the result string. | |
$result .= $char; | |
// If the last character was the beginning of an element, | |
// output a new line and indent the next line. | |
if (($char == ',' || $char == '{' || $char == '[') && $outOfQuotes) { | |
$result .= $newLine; | |
if ($char == '{' || $char == '[') { | |
$pos ++; | |
} | |
for ($j = 0; $j < $pos; $j++) { | |
$result .= $indentStr; | |
} | |
} | |
$prevChar = $char; | |
} | |
return $result; | |
} |
or, echo json_encode(json_decode($json), JSON_PRETTY_PRINT);
awesome, pgee.. nice and simple trick. it works like a charm. Thanks!
A very simple solution for JSON beautifier. Also Please visit on JSON Beautifier tool which converts your text JSON into human-readable. https://www.webinovers.com/web-tools/json-beautifier
or, echo json_encode(json_decode($json), JSON_PRETTY_PRINT);
Nice Pgee70 but if you want to have more control over the result like the number of white spaces for the indentation, this function becomes handy as JSON_PRETTY_PRINT does not allow this kind of customization.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
or, echo json_encode(json_decode($json), JSON_PRETTY_PRINT);