package lin.shinder.utils { /** * ... * @author shinder.lin */ public class JsonFormatter { private var spaces:int; private var spaceUnit:String = " "; private var resultStr:String = ""; private var prevCh:String; public function JsonFormatter(str:String = null) { if (str) { findBracket( str ); } } public function get result():String { if ( resultStr.charAt(0) == "\n") { resultStr = resultStr.slice(1); } return resultStr; } private function findBracket(str:String):void { var ch:String; var leftStr:String; var midStr:String; var rightStr:String; for (var i:int = 0; i < str.length; i++) { ch = str.charAt(i); if ( ch == '[' || ch == '{' || ch == ',' ) { leftStr = str.slice(0, i + 1); rightStr = str.slice(i + 1); break; } else if ( ch == '}' || ch == ']' ) { leftStr = str.slice(0, i); midStr = str.slice(i, i+1); rightStr = str.slice(i+1); break; } } if (leftStr == null) { return; } if (ch == ',' && (prevCh=='}' || prevCh==']')) { resultStr += leftStr; } else { resultStr += getSpaces() + leftStr; } switch(ch) { case '[': spaces ++; break; case '{': spaces ++; break; case '}': spaces --; break; case ']': spaces --; break; } if (midStr != null) { resultStr += getSpaces() + midStr; } prevCh = ch; if(rightStr.length>1) { findBracket( rightStr ); } else { resultStr += "\n" + rightStr; } } private function getSpaces():String { var str:String = "\n"; for (var i:int = 0; i < spaces; i++){ str += spaceUnit; } return str; } } }
2010-04-09
JSON Formatter
可搭配 as3corelib 裡的 JSON 類別使用, 格式化 JSON 字串, 以方便給人閱讀。在這裡並不會檢查JSON 的格式是否正確。
訂閱:
張貼留言 (Atom)
2 則留言:
我想請問一下 我是使用flash CS4
請問他可以支援JSON嗎?有JSON類別嗎?
應為我看其他人網路解碼時都用
com.adobe.serialization.json.JSON
cs4有嗎?
可以的話大大解答一下 謝謝
https://github.com/mikechambers/as3corelib
張貼留言