参考了:js json object to string 变在原文的基础上进行了改进,加快处理速度。
并在原文的基础上修改了三处不当之处:
- 判定字符串时需要加上双引号"";
- 空数组情况错误,需要判定:r[len==0? j : j-1] = ']';
- 空对象情况错误,需要判定:r[r[j-1] == '{' ? j:j-1] ='}' 但是这种情况可以忽略考虑。
不多说直接贴代码:
/* object to string */ function obj2str(o){ var r = [], i, j = 0, len; if(o == null) { return o; } if(typeof o == 'string'){ return '"'+o+'"'; } if(typeof o == 'object'){ if(!o.sort){ r[j++]='{'; for(i in o){ r[j++]= '"'; r[j++]= i; r[j++]= '":'; r[j++]= obj2str(o[i]); r[j++]= ','; } //可能的空对象 //r[r[j-1] == '{' ? j:j-1]='}'; r[j-1] = '}'; }else{ r[j++]='['; for(i =0, len = o.length;i < len; ++i){ r[j++] = obj2str(o[i]); r[j++] = ','; } //可能的空数组 r[len==0 ? j:j-1]=']'; } return r.join(''); } return o.toString(); }
很不错的。