Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** Contrary to many actionscript json libraries,
- * this function encodes properties of dynamic classes. */
- public static function jsonEncode(obj:*, pretty:Boolean = false, maxLength:int = 60, depth:int = 0):String {
- const TAB_UNIT:String = " ";
- var str:String;
- var key:String;
- var el:*;
- var arr:Array;
- var keyArr:Array;
- var tabStr:String;
- if (pretty) {
- tabStr = "";
- for (var i:int = 0; i < depth; i++)
- tabStr += TAB_UNIT;
- }
- if (obj is Number || obj is int || obj is Boolean)
- {
- return String(obj);
- }
- else if (obj is String)
- {
- //Escape backslashes
- str = replaceAll(obj as String, "\\", "\\\\");
- //Escape double quotes
- str = replaceAll(str, "\"", "\\\"");
- return '"' + str + '"';
- }
- else if (obj is Array)
- {
- arr = [];
- for each (el in obj)
- arr.push(jsonEncode(el, pretty, maxLength, depth + 1));
- if (pretty) {
- str = '[' + arr.join(', ') + ']';
- if (str.length > maxLength) {
- str = '[\n' +
- tabStr + TAB_UNIT + arr.join(',\n' + tabStr + TAB_UNIT) + '\n' +
- tabStr + ']';
- }
- return str;
- } else {
- return '[' + arr.join(',') + ']';
- }
- }
- else
- {
- keyArr = getObjKeys(obj);
- arr = [];
- for each (key in keyArr)
- arr.push('"' + key + (pretty ? '": ' : '":') + jsonEncode(obj[key], pretty, maxLength, depth + 1));
- if (pretty) {
- str = '{' + arr.join(', ') + '}';
- if (str.length > maxLength) {
- str = '{\n' +
- tabStr + TAB_UNIT + arr.join(',\n' + tabStr + TAB_UNIT) + '\n' +
- tabStr + '}';
- }
- return str;
- } else {
- return '{' + arr.join(',') + '}';
- }
- }
- }
- public static function replaceAll(target:String, p:String, repl:String):String {
- var str:String = target;
- var i:int = 0;
- var k:int;
- while ((k = str.indexOf(p, i)) >= 0) {
- str = str.substring(0, k) + repl + str.substring(k + p.length);
- i = k + repl.length;
- }
- return str;
- }
- /** Returns an array of public parameter names of a given instance
- * of some class and also dynamically set key names.*/
- public static function getObjKeys(obj:Object):Array
- {
- var arr:Array = [];
- for each (var qname:QName in ObjectUtil.getClassInfo(obj).properties)
- arr.push(qname.localName);
- return arr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement