2011
Nov
11

剛剛在 Javascript 想要把 Array 轉成 Json string ,上網找一些別人寫好的來用,結果每個都失敗,有些連跑都跑不過,不然就是 Array key 不見了,變成 index , 0 1 2 3的索引,真是氣死人,後來花了 5 分鐘自已寫一個,還是自已寫的最順手。

Array 轉換成 Json String

Example
  1. function jsonToString(arr) {
  2. var s="";
  3. if( arr instanceof Array || arr instanceof Object){
  4. var isObj=0;
  5. //check value type
  6. for(key in arr){
  7. if( isNaN(parseInt(key)) ){ //key is string
  8. isObj=1;
  9. }
  10. else{
  11. //key is index , check sort
  12. var na=arr.length;
  13. var tmp=arr;
  14. //hack for ie
  15. arr=Array();
  16. for(var j=0;j<na;j++){
  17. if( typeof(tmp[j])=="undefined" ){
  18. arr[j]="";
  19. }
  20. else{
  21. arr[j]=tmp[j];
  22. }
  23. }
  24. }
  25. break;
  26. }
  27. for(key in arr){
  28. var value=arr[key];
  29. if( isObj ){
  30. if(s){s+=',';}
  31. s+='"'+key+'":'+jsonToString(value);
  32. }
  33. else{
  34. if(s){s+=',';}
  35. s+=jsonToString(value);
  36. }
  37. }
  38. if(isObj)
  39. s='{'+s+'}';
  40. else
  41. s='['+s+']'
  42. }
  43. else{
  44. if(!isNaN(parseInt(arr))){
  45. s+=arr;
  46. }
  47. else{
  48. s='"'+arr+'"';
  49. }
  50. }
  51. return s;
  52. }

Json String 轉換成 Array

Example
  1. function stringToJson(json){
  2. eval('var s='+json+';');
  3. return s;
  4. }

執行結果

測試有 key 的 Array , 索引值為數字的 Array

Example
  1. var a=Array();
  2. a["a"]=Array("2","3","40");
  3. a["b"]=5;
  4. debug(jsonToString(a));
  5. //output: {"a":[2,3,40],"b":5}
  6.  
  7. b=Array();
  8. b[0]=Array("2","3","40");
  9. b[1]=5;
  10. debug(jsonToString(b));
  11. //output: [[2,3,40],5]
  12.  
  13. debug(stringToJson('{"a":[2,3,40],"b":5}'));
  14. /*output
  15. Array{
  16. a = 2,3,40
  17. b = 5
  18. }
  19. */

測試索引值中間有缺的 Array

Example
  1. var b=Array();
  2. b[0]=5;
  3. b[2]=10;//漏掉一個
  4. b[3]=Array();
  5. b[3]["a"]="abc";
  6. debug(jsonToString(b));
  7. //output [5,"",10,{"a":"abc"}]

回應 (Leave a comment)