JS对象序列化成json数据和json数据转化为JS对象的代码


Posted in Javascript onAugust 23, 2017

JS对象序列化成json数据:

function Serialize(obj){   
  switch(obj.constructor){   
    case Object:   
      var str = "{";   
      for(var o in obj){   
        str += o + ":" + Serialize(obj[o]) +",";   
      }   
      if(str.substr(str.length-1) == ",")   
        str = str.substr(0,str.length -1);   
       return str + "}";   
       break;   
     case Array:         
       var str = "[";   
       for(var o in obj){   
         str += Serialize(obj[o]) +",";   
       }   
       if(str.substr(str.length-1) == ",")   
         str = str.substr(0,str.length -1);   
       return str + "]";   
       break;   
     case Boolean:   
       return "\"" + obj.toString() + "\"";   
       break;   
     case Date:   
       return "\"" + obj.toString() + "\"";   
       break;   
     case Function:   
       break;   
     case Number:   
       return "\"" + obj.toString() + "\"";   
       break;    
     case String:   
       return "\"" + obj.toString() + "\"";   
       break;     
   }   
 }   
var staff_list_obj  ={};  
var staff_id   = 1001;  
staff_list_obj[staff_id]  = {};  
staff_list_obj[staff_id]["姓名"] = '111';  
staff_list_obj[staff_id]["测试"] = '222';  
alert(Serialize(staff_list_obj));

JS对象序列化为JSON对象的方法二

var $ = $ || {};



/** 
 * 将JS对象序列化为JSON字符串 
 * @param {Mixed} o The variable to decode 
 * @return {String} The JSON string 
 * String json = $.encode(o); 
 */ 
$.encode = (function() {
  if ( typeof(JSON)!=='undefined' && typeof(JSON.stringify)!=='undefined') {
    return JSON.stringify;
  }
  var I = !!{}.hasOwnProperty, _ = function(I) {
    return I < 10 ? "0" + I : I;
  }, A = {
    "\b" : "\\b",
    "\t" : "\\t",
    "\n" : "\\n",
    "\f" : "\\f",
    "\r" : "\\r",
    "\"" : "\\\"",
    "\\" : "\\\\"
  };
  return (function(C) {
    if (typeof C == "undefined" || C === null) {
      return "null";
    } else {
      if (Object.prototype.toString.call(C) === "[object Array]") {
        var B = ["["], G, E, D = C.length, F;
        for (E = 0; E < D; E += 1) {
          F = C[E];
          switch (typeof F) {
            case "undefined" :
            case "function" :
            case "unknown" :
              break;
            default :
              if (G) {
                B.push(",");
              }
              B.push(F === null ? "null" : $.encode(F));
              G = true;
          }
        }
        B.push("]");
        return B.join("");
      } else {
        if ((Object.prototype.toString.call(C) === "[object Date]")) {
          return "\"" + C.getFullYear() + "-" + _(C.getMonth() + 1) + "-" + _(C.getDate()) + "T" + _(C.getHours()) + ":" + _(C.getMinutes()) + ":" + _(C.getSeconds()) + "\"";
        } else {
          if (typeof C == "string") {
            return "\"" + C.replace(/([\x00-\x1f\\"])/g, function(B, _) {
              var I = A[_];
              if (I) {
                return I;
              }
              return '';
            }).replace(/[^\u0000-\u00FF]/g, function($0) {
              return escape($0).replace(/(%u)(\w{4})/gi, "\\u$2")
            }) + "\"";
          } else {
            if (typeof C == "number") {
              return isFinite(C) ? String(C) : "null";
            } else {
              if (typeof C == "boolean") {
                return String(C);
              } else {
                B = ["{"], G, E, F;
                for (E in C) {
                  if (!I || C.hasOwnProperty(E)) {
                    F = C[E];
                    if (F === null) {
                      continue;
                    }
                    switch (typeof F) {
                      case "undefined" :
                      case "function" :
                      case "unknown" :
                        break;
                      default :
                        if (G) {
                          B.push(",");
                        }
                        B.push($.encode(E), ":", $.encode(F));
                        G = true;
                    }
                  }
                }
                B.push("}");
                return B.join("");
              }
            }
          }
        }
      }
    }
  });
})();

json数据转化为JS对象:

var jsonString={....}/[....];
eval("var obj="+jsonString);
alert(obj);

写道

function evalJSON(json){ 
var obj = null; 
try { 
obj = eval("(" + json + ")"); 
} catch(E){} 

return obj ; 
}
Javascript 相关文章推荐
JavaScript下申明对象的几种方法小结
Oct 02 Javascript
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
Sep 16 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
May 05 Javascript
Bootstrap3制作自己的导航栏
May 12 Javascript
jQuery解决IE6、7、8不能使用 JSON.stringify 函数的问题
May 31 Javascript
Jquery鼠标放上去显示全名的实现方法
Feb 06 Javascript
详谈angularjs中路由页面强制更新的问题
Apr 24 Javascript
原生JS+Canvas实现五子棋游戏实例
Jun 19 Javascript
Vue全家桶实践项目总结(推荐)
Nov 04 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
Jul 18 Javascript
微信小程序保存图片到相册权限设置
Apr 09 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 #Javascript
angular2路由切换改变页面title的示例代码
Aug 23 #Javascript
通俗解释JavaScript正则表达式快速记忆
Aug 23 #Javascript
bootstrap fileinput实现文件上传功能
Aug 23 #Javascript
jQuery Position方法使用和兼容性
Aug 23 #jQuery
详解EasyUi控件中的Datagrid
Aug 23 #Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
Aug 23 #Javascript
You might like
php设计模式 Strategy(策略模式)
2011/06/26 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
php常用图片处理类
2016/03/16 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
用按钮控制iframe显示的网页实现方法
2013/02/04 Javascript
JavaScript的事件代理和委托实例分析
2015/03/25 Javascript
javascript删除数组重复元素的方法汇总
2015/06/24 Javascript
js实现继承的5种方式
2015/12/01 Javascript
原生js仿浏览器滚动条效果
2017/03/02 Javascript
js实现网页定位导航功能
2017/03/07 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
JavaScript数组_动力节点Java学院整理
2017/06/26 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
使用vue cli4.x搭建vue项目的过程详解
2020/05/08 Javascript
Javascript表单序列化原理及实现代码详解
2020/10/30 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
使用Python实现一个简单的项目监控
2015/03/31 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
2016/12/22 HTML / CSS
介绍一下Linux文件的记录形式
2013/09/29 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
新员工欢迎词
2014/01/12 职场文书
致100米运动员广播稿
2014/02/14 职场文书
运动会入场词60字
2014/02/15 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
学习型班组申报材料
2014/05/31 职场文书
学校学习雷锋活动总结
2014/07/03 职场文书
写得不错的求职信范文
2014/07/11 职场文书
员工培训协议书
2014/09/15 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
企业战略合作意向书
2015/05/08 职场文书
学前教育见习总结
2015/06/23 职场文书
股东出资协议书
2016/03/21 职场文书
一篇文章带你搞懂Python类的相关知识
2021/05/20 Python