function serializeWithBuilder(object, stringBuilder) {
var i;
switch (typeof object) {
case 'object ':
if (object) {
if (object.join) {//if is array, you can using another method implement
stringBuilder.append( '[ ');
for (i = 0; i < object.length; ++i) {
if (i > 0) {
stringBuilder.append( ', ');
}
stringBuilder.append(serializeWithBuilder(object[i], stringBuilder));
}
stringBuilder.append( '] ');
}
else {
if (typeof object.serialize == 'function ') {
stringBuilder.append(object.serialize());
break;
}
stringBuilder.append( '{ ');
var needComma = false;
for (var name in object) {
if (name.startsWith( '$ ')) {
continue;
}
var value = object[name];
if (typeof value != 'undefined ' && typeof value != 'function ') {
if (needComma)
stringBuilder.append( ', ');
else
needComma = true;