参考了: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();
}
很不错的。