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 constructor和instanceof,JSOO中的一对欢喜冤家
May 25 Javascript
Extjs4 GridPanel 的几种样式使用介绍
Apr 18 Javascript
js获取html页面节点方法(递归方式)
Dec 13 Javascript
告诉你什么是javascript的回调函数
Sep 04 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
js提示框替代系统alert,自动关闭alert对话框的实现方法
Nov 07 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
Jun 08 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
Jul 17 jQuery
Vue2.0 vue-source jsonp 跨域请求
Aug 04 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
vue 取出v-for循环中的index值实例
Nov 09 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
Aug 14 Javascript
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正则匹配汉字的方法介绍
2013/04/25 PHP
PHP内核探索之解释器的执行过程
2015/12/22 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
PHP copy函数使用案例代码解析
2020/09/01 PHP
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
深入理解javaScript中的事件驱动
2013/05/21 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
JS实现简单的选择题测评系统代码思路详解(demo)
2017/09/03 Javascript
vue select组件的使用与禁用实现代码
2018/04/10 Javascript
js计算两个日期间的天数月的实例代码
2018/09/20 Javascript
面试题:react和vue的区别分析
2019/04/08 Javascript
JavaScript中的 new 命令
2019/05/22 Javascript
vue+webpack 更换主题N种方案优劣分析
2019/10/28 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
pandas读取csv文件,分隔符参数sep的实例
2018/12/12 Python
Python实现微信小程序支付功能
2019/07/25 Python
详解python中__name__的意义以及作用
2019/08/07 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
办公室副主任岗位职责
2013/11/25 职场文书
小学家长会邀请函
2014/01/23 职场文书
卫生安全检查制度
2014/02/04 职场文书
学校花圃的标语
2014/06/18 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang