iarmin

json_format

Jun 23rd, 2012
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.99 KB | None | 0 0
  1. function json_format($json)
  2. {
  3.     $tab = "  ";
  4.     $new_json = "";
  5.     $indent_level = 0;
  6.     $in_string = false;
  7.  
  8.     $json_obj = json_decode($json);
  9.  
  10.     if($json_obj === false)
  11.         return false;
  12.  
  13.     $json = json_encode($json_obj);
  14.     $len = strlen($json);
  15.  
  16.     for($c = 0; $c < $len; $c++)
  17.     {
  18.         $char = $json[$c];
  19.         switch($char)
  20.         {
  21.             case '{':
  22.             case '[':
  23.                 if(!$in_string)
  24.                 {
  25.                     $new_json .= $char . "\n" . str_repeat($tab, $indent_level+1);
  26.                     $indent_level++;
  27.                 }
  28.                 else
  29.                 {
  30.                     $new_json .= $char;
  31.                 }
  32.                 break;
  33.             case '}':
  34.             case ']':
  35.                 if(!$in_string)
  36.                 {
  37.                     $indent_level--;
  38.                     $new_json .= "\n" . str_repeat($tab, $indent_level) . $char;
  39.                 }
  40.                 else
  41.                 {
  42.                     $new_json .= $char;
  43.                 }
  44.                 break;
  45.             case ',':
  46.                 if(!$in_string)
  47.                 {
  48.                     $new_json .= ",\n" . str_repeat($tab, $indent_level);
  49.                 }
  50.                 else
  51.                 {
  52.                     $new_json .= $char;
  53.                 }
  54.                 break;
  55.             case ':':
  56.                 if(!$in_string)
  57.                 {
  58.                     $new_json .= ": ";
  59.                 }
  60.                 else
  61.                 {
  62.                     $new_json .= $char;
  63.                 }
  64.                 break;
  65.             case '"':
  66.                 if($c > 0 && $json[$c-1] != '\\')
  67.                 {
  68.                     $in_string = !$in_string;
  69.                 }
  70.             default:
  71.                 $new_json .= $char;
  72.                 break;                    
  73.         }
  74.     }
  75.  
  76.     return $new_json;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment