Trace JSON object in AS3

Blog / ActionScript ·

I'm absolutely sure that all of you are working with JSON objects. It's pretty helpful to be able to print them and find out what exactly they contain. I wrote a simple function that makes this possible.

Here is the JSON object that we are going to use and the calling of the print method:

var arr:Array = [	{		categories:["a", "b", -12, "c"],		users:["John", "Steve"],		id:23,		information:{			name:"...name...",			description:"...description..."		}	},	{		categories:["d", "e"],		users:["Martin", "Jason"],		id:103,		information:{			name:"NNN",			description:"DDD"		}	}];printJSON(arr);

Here is the function printJSON

function printJSON(o: Object): void {
    trace("Debug.printJSON");
    trace(parseJSON(o));
  }
  
  function parseJSON(o: * , spaces: int = 1): String {
    var str: String = "";
    if (getTypeof(o) == "object") {
      str += "{\\n";
      for (var i: * in o) {
        str += getSpaces(spaces) + i + "=";
        if (getTypeof(o[i]) == "object" || getTypeof(o[i]) == "array") {
          str += parseJSON(o[i], spaces + 1) + "\\n";
        } else {
          var type: String = getTypeof(o[i]);
          if (type == "string") {
            str += "\\"
            " + o[i] + "\\
            "\\n";
          } else if (type == "number") {
            str += o[i] + "\\n";
          }
        }
      }
      str += getSpaces(spaces - 1 < 0 ? 0 : spaces - 1) + "}";
    } else if (getTypeof(o) == "array") {
      str += "[\\n";
      var n: int = o.length;
      for (i = 0; i < n; i++) {
        str += getSpaces(spaces) + "[" + i + "]=";
        if (getTypeof(o[i]) == "object" || getTypeof(o[i]) == "array") {
          str += parseJSON(o[i], spaces + 1) + "\\n";
        } else {
          type = getTypeof(o[i]);
          if (type == "string") {
            str += "\\"
            " + o[i] + "\\
            "";
          } else if (type == "number") {
            str += o[i];
          }
          str += "\\n";
        }
      }
      str += getSpaces(spaces - 1 < 0 ? 0 : spaces - 1) + "]";
    }
    return str;
  }
  
  function getSpaces(n: int): String {
    var str: String = "";
    for (var i: int = 0; i < n; i++) {
      str += "  ";
    }
    return str;
  }
  
  function getTypeof(o: * ): String {
    return typeof (o) == "object" ? (o.length == null ? "object" : "array") : typeof (o);
  }

And the result is:

Debug.printJSON[  [0]={    information={      name="...name..."      description="...description..."    }    users=[      [0]="John"      [1]="Steve"    ]    id=23    categories=[      [0]="a"      [1]="b"      [2]=-12      [3]="c"    ]  }  [1]={    information={      name="NNN"      description="DDD"    }    users=[      [0]="Martin"      [1]="Jason"    ]    id=103    categories=[      [0]="d"      [1]="e"    ]  }]

Krasimir Tsonev With over two decades of deep programming expertise, I offer comprehensive web consultancy and stack audits, alongside specialized workshops, training, and engaging public speaking to elevate your team's skills and optimize your digital presence. Contact me.

Keywords: str description gettypeof o spaces var object information users
Share the post on Twitter, Facebook, LinkedIn