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中实现暂停的几篇文章
Mar 04 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
Feb 13 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
PHP+mysql+Highcharts生成饼状图
May 04 Javascript
深入学习jQuery Validate表单验证(二)
Jan 18 Javascript
最简单的tab切换实例代码
May 13 Javascript
微信小程序 教程之模板
Oct 18 Javascript
JavaScript错误处理和堆栈追踪详解
Apr 18 Javascript
vue技术分享之你可能不知道的7个秘密
Apr 09 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
vue-element-admin 菜单标签失效的解决方式
Nov 12 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
Nov 17 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使用数组实现队列
2012/02/05 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
CodeIgniter配置之config.php用法实例分析
2016/01/19 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
jquery复选框CHECKBOX全选、反选
2008/08/30 Javascript
jQuery基本选择器选择元素使用介绍
2013/04/18 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
jQuery实现的左右移动焦点图效果
2016/01/14 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
JS采用绝对定位实现回到顶部效果完整实例
2016/06/20 Javascript
JS完成画圆圈的小球
2017/03/07 Javascript
Angular 4 依赖注入学习教程之FactoryProvider的使用(四)
2017/06/04 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
JS实现的加减乘除四则运算计算器示例
2017/08/09 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
ES6学习笔记之map、set与数组、对象的对比
2018/03/01 Javascript
JS使用iView的Dropdown实现一个右键菜单
2019/05/06 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
vue实现输入一位数字转汉字功能
2019/12/13 Javascript
通过实例解析JavaScript for in及for of区别
2020/06/15 Javascript
python实现发送邮件功能代码
2017/12/14 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
如何使用Flask-Migrate拓展数据库表结构
2019/07/24 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
python opencv 实现读取、显示、写入图像的方法
2020/06/08 Python
python opencv实现图像配准与比较
2021/02/09 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
canvas使用注意点总结
2013/07/19 HTML / CSS
GANT英国官方网上商店:甘特衬衫
2018/02/06 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
刚毕业大学生自荐信范文
2014/02/20 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
运动会新闻报道稿
2015/07/22 职场文书