2011
Nov
11
刚刚在 Javascript 想要把 Array 转成 Json string ,上网找一些别人写好的来用,结果每个都失败,有些连跑都跑不过,不然就是 Array key 不见了,变成 index , 0 1 2 3的索引,真是气死人,后来花了 5 分钟自已写一个,还是自已写的最顺手。
Array 转换成 Json String
Example
- function jsonToString(arr) {
- var s="";
- if( arr instanceof Array || arr instanceof Object){
- var isObj=0;
- //check value type
- for(key in arr){
- if( isNaN(parseInt(key)) ){ //key is string
- isObj=1;
- }
- else{
- //key is index , check sort
- var na=arr.length;
- var tmp=arr;
- //hack for ie
- arr=Array();
- for(var j=0;j<na;j++){
- if( typeof(tmp[j])=="undefined" ){
- arr[j]="";
- }
- else{
- arr[j]=tmp[j];
- }
- }
- }
- break;
- }
- for(key in arr){
- var value=arr[key];
- if( isObj ){
- if(s){s+=',';}
- s+='"'+key+'":'+jsonToString(value);
- }
- else{
- if(s){s+=',';}
- s+=jsonToString(value);
- }
- }
- if(isObj)
- s='{'+s+'}';
- else
- s='['+s+']'
- }
- else{
- if(!isNaN(parseInt(arr))){
- s+=arr;
- }
- else{
- s='"'+arr+'"';
- }
- }
- return s;
- }
Json String 转换成 Array
Example
- function stringToJson(json){
- eval('var s='+json+';');
- return s;
- }
执行结果
测试有 key 的 Array , 索引值为数字的 Array
Example
- var a=Array();
- a["a"]=Array("2","3","40");
- a["b"]=5;
- debug(jsonToString(a));
- //output: {"a":[2,3,40],"b":5}
- b=Array();
- b[0]=Array("2","3","40");
- b[1]=5;
- debug(jsonToString(b));
- //output: [[2,3,40],5]
- debug(stringToJson('{"a":[2,3,40],"b":5}'));
- /*output
- Array{
- a = 2,3,40
- b = 5
- }
- */
测试索引值中间有缺的 Array
Example
- var b=Array();
- b[0]=5;
- b[2]=10;//漏掉一个
- b[3]=Array();
- b[3]["a"]="abc";
- debug(jsonToString(b));
- //output [5,"",10,{"a":"abc"}]
回應 (Leave a comment)