|
@@ -56,7 +56,9 @@ class Json {
|
|
#end
|
|
#end
|
|
}
|
|
}
|
|
|
|
|
|
- function toString(v:Dynamic) {
|
|
|
|
|
|
+ var replacer:Dynamic -> Dynamic -> Dynamic;
|
|
|
|
+
|
|
|
|
+ function toString(v:Dynamic, ?replacer:Dynamic -> Dynamic -> Dynamic) {
|
|
#if flash9
|
|
#if flash9
|
|
buf = new flash.utils.ByteArray();
|
|
buf = new flash.utils.ByteArray();
|
|
buf.endian = flash.utils.Endian.BIG_ENDIAN;
|
|
buf.endian = flash.utils.Endian.BIG_ENDIAN;
|
|
@@ -64,7 +66,8 @@ class Json {
|
|
#else
|
|
#else
|
|
buf = new StringBuf();
|
|
buf = new StringBuf();
|
|
#end
|
|
#end
|
|
- toStringRec(v);
|
|
|
|
|
|
+ this.replacer = replacer;
|
|
|
|
+ toStringRec("", v);
|
|
return buf.toString();
|
|
return buf.toString();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -78,7 +81,7 @@ class Json {
|
|
if( first ) first = false else addChar(','.code);
|
|
if( first ) first = false else addChar(','.code);
|
|
quote(f);
|
|
quote(f);
|
|
addChar(':'.code);
|
|
addChar(':'.code);
|
|
- toStringRec(value);
|
|
|
|
|
|
+ toStringRec(f, value);
|
|
}
|
|
}
|
|
addChar('}'.code);
|
|
addChar('}'.code);
|
|
}
|
|
}
|
|
@@ -93,7 +96,8 @@ class Json {
|
|
fieldsString(v,Reflect.fields(v));
|
|
fieldsString(v,Reflect.fields(v));
|
|
}
|
|
}
|
|
|
|
|
|
- function toStringRec(v:Dynamic) {
|
|
|
|
|
|
+ function toStringRec(k:Dynamic, v:Dynamic) {
|
|
|
|
+ if (replacer != null) v = replacer(k, v);
|
|
switch( Type.typeof(v) ) {
|
|
switch( Type.typeof(v) ) {
|
|
case TUnknown:
|
|
case TUnknown:
|
|
add('"???"');
|
|
add('"???"');
|
|
@@ -113,11 +117,11 @@ class Json {
|
|
addChar('['.code);
|
|
addChar('['.code);
|
|
var len = v.length;
|
|
var len = v.length;
|
|
if( len > 0 ) {
|
|
if( len > 0 ) {
|
|
- toStringRec(v[0]);
|
|
|
|
|
|
+ toStringRec(0, v[0]);
|
|
var i = 1;
|
|
var i = 1;
|
|
while( i < len ) {
|
|
while( i < len ) {
|
|
addChar(','.code);
|
|
addChar(','.code);
|
|
- toStringRec(v[i++]);
|
|
|
|
|
|
+ toStringRec(i, v[i++]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
addChar(']'.code);
|
|
addChar(']'.code);
|
|
@@ -401,13 +405,13 @@ class Json {
|
|
#end
|
|
#end
|
|
}
|
|
}
|
|
|
|
|
|
- public static function stringify( value : Dynamic ) : String {
|
|
|
|
|
|
+ public static function stringify( value : Dynamic, ?replacer:Dynamic -> Dynamic -> Dynamic ) : String {
|
|
#if (php && !haxeJSON)
|
|
#if (php && !haxeJSON)
|
|
return phpJsonEncode(value);
|
|
return phpJsonEncode(value);
|
|
#elseif (flash11 && !haxeJSON)
|
|
#elseif (flash11 && !haxeJSON)
|
|
return null;
|
|
return null;
|
|
#else
|
|
#else
|
|
- return new Json().toString(value);
|
|
|
|
|
|
+ return new Json().toString(value, replacer);
|
|
#end
|
|
#end
|
|
}
|
|
}
|
|
|
|
|