json_format.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. // Pretty print some JSON
  3. function json_format($json)
  4. {
  5. $tab = " ";
  6. $new_json = "";
  7. $indent_level = 0;
  8. $in_string = false;
  9. /*
  10. commented out by monk.e.boy 22nd May '08
  11. because my web server is PHP4, and
  12. json_* are PHP5 functions...
  13. $json_obj = json_decode($json);
  14. if($json_obj === false)
  15. return false;
  16. $json = json_encode($json_obj);
  17. */
  18. $len = strlen($json);
  19. for($c = 0; $c < $len; $c++)
  20. {
  21. $char = $json[$c];
  22. switch($char)
  23. {
  24. case '{':
  25. case '[':
  26. if(!$in_string)
  27. {
  28. $new_json .= $char . "\n" . str_repeat($tab, $indent_level+1);
  29. $indent_level++;
  30. }
  31. else
  32. {
  33. $new_json .= $char;
  34. }
  35. break;
  36. case '}':
  37. case ']':
  38. if(!$in_string)
  39. {
  40. $indent_level--;
  41. $new_json .= "\n" . str_repeat($tab, $indent_level) . $char;
  42. }
  43. else
  44. {
  45. $new_json .= $char;
  46. }
  47. break;
  48. case ',':
  49. if(!$in_string)
  50. {
  51. $new_json .= ",\n" . str_repeat($tab, $indent_level);
  52. }
  53. else
  54. {
  55. $new_json .= $char;
  56. }
  57. break;
  58. case ':':
  59. if(!$in_string)
  60. {
  61. $new_json .= ": ";
  62. }
  63. else
  64. {
  65. $new_json .= $char;
  66. }
  67. break;
  68. case '"':
  69. if($c > 0 && $json[$c-1] != '\\')
  70. {
  71. $in_string = !$in_string;
  72. }
  73. default:
  74. $new_json .= $char;
  75. break;
  76. }
  77. }
  78. return $new_json;
  79. }