JSON and Data Shapes
Pretty JSON
JSON can be formatted for humans while keeping the same data values.
readable output
Pretty JSON adds whitespace, so examples can summarize it with line counts.
Pretty JSON
pretty_json.php
Replay: real traced execution (multi-file project)
<?php
$level = "debug";
$json = json_encode(["level" => $level, "enabled" => true], JSON_PRETTY_PRINT);
$lines = substr_count($json, "\n") + 1;
echo "level=" . $level . "\n";
echo "lines=" . $lines . "\n";
<?php
$level = "info";
$json = json_encode(["level" => $level, "enabled" => true], JSON_PRETTY_PRINT);
$lines = substr_count($json, "\n") + 1;
echo "level=" . $level . "\n";
echo "lines=" . $lines . "\n";
<?php
$level = "warn";
$json = json_encode(["level" => $level, "enabled" => true], JSON_PRETTY_PRINT);
$lines = substr_count($json, "\n") + 1;
echo "level=" . $level . "\n";
echo "lines=" . $lines . "\n";
$level ← debug, $json ← { "level": "debug", "enabled": true }
1<?php2$level→ debug = "debug"; //@level="info", "warn"3$json→ { "level": "debug", "enabled": true } = json_encode(["level" => $leveldebug, "enabled" => true], JSON_PRETTY_PRINT);4$lines→ 4 = substr_count($json{ "level": "debug", "enabled": true }, "\n") + 1;56echo "level=" . $leveldebug . "\n";7echo "lines=" . $lines4 . "\n";outputlevel=debug lines=4
$level ← info, $json ← { "level": "info", "enabled": true }
1<?php2$level→ info = "info";3$json→ { "level": "info", "enabled": true } = json_encode(["level" => $levelinfo, "enabled" => true], JSON_PRETTY_PRINT);4$lines→ 4 = substr_count($json{ "level": "info", "enabled": true }, "\n") + 1;56echo "level=" . $levelinfo . "\n";7echo "lines=" . $lines4 . "\n";outputlevel=info lines=4
$level ← warn, $json ← { "level": "warn", "enabled": true }
1<?php2$level→ warn = "warn";3$json→ { "level": "warn", "enabled": true } = json_encode(["level" => $levelwarn, "enabled" => true], JSON_PRETTY_PRINT);4$lines→ 4 = substr_count($json{ "level": "warn", "enabled": true }, "\n") + 1;56echo "level=" . $levelwarn . "\n";7echo "lines=" . $lines4 . "\n";outputlevel=warn lines=4