日期:2014-05-16  浏览次数:20379 次

js string json 相互转换(转载)

function jsonToString (obj){   
        var THIS = this;    
        switch(typeof(obj)){   
            case 'string':   
                return '"' + obj.replace(/(["\\])/g, '\\$1') + '"';   
            case 'array':   
                return '[' + obj.map(THIS.jsonToString).join(',') + ']';   
            case 'object':   
                 if(obj instanceof Array){   
                    var strArr = [];   
                    var len = obj.length;   
                    for(var i=0; i<len; i++){   
                        strArr.push(THIS.jsonToString(obj[i]));   
                    }   
                    return '[' + strArr.join(',') + ']';   
                }else if(obj==null){   
                    return 'null';   
  
                }else{   
                    var string = [];   
                    for (var property in obj) string.push(THIS.jsonToString(property) + ':' + THIS.jsonToString(obj[property]));   
                    return '{' + string.join(',') + '}';   
                }   
            case 'number':   
                return obj;   
            case false:   
                return obj;   
        }   
    }
 

function stringToJSON(obj){   
        return eval('(' + obj + ')');   
}
?
当用stringToJSON装换这种json格式时,也就是后台用net.sf.json.JSONArray对象时,需要把JSONArray.toString()后
的字符两边的[ ,]都去掉
String convertJson=jarrays.toString().replace("[", "");
convertJson=convertJson.toString().replace("]", "");
然后放进去是不要两边的引号,像下边这样;
result="{\"msg\":"+true+",\"desc\":"+convertJson+"}";

JSONArray.toString()后的格式是这样的
[
{
"UUID":"436817","MSGID":""
}
],所以要按照上面的改法,然后用stringToJSON是才有用,不如装换后要获取UUID的值时,就可以这样获取了result.desc.UUID