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
張貼留言