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 相关文章推荐
jquery each()源代码
Feb 14 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
JavaScript函数的调用以及参数传递
Oct 21 Javascript
js窗口震动小程序分享
Nov 28 Javascript
jQuery实现可拖拽3D万花筒旋转特效
Jan 03 Javascript
简单实现JS上传图片预览功能
Apr 14 Javascript
jquery插件开发之选项卡制作详解
Aug 30 jQuery
react 父组件与子组件之间的值传递的方法
Sep 14 Javascript
使用Dropzone.js上传的示例代码
Oct 10 Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 Javascript
解决layui下拉框监听问题(监听不到值的变化)
Sep 28 Javascript
JS canvas实现画板和签字板功能
Feb 23 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
在Yii框架中使用PHP模板引擎Twig的例子
2014/06/13 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
详解WordPress中创建和添加过滤器的相关PHP函数
2015/12/29 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
js/html光标定位的实现代码
2013/09/23 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
JavaScript实现横线提示输入验证码随输入验证码输入消失的方法
2016/09/24 Javascript
jQuery Plupload上传插件的使用
2017/04/19 jQuery
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
解读vue生成的文件目录结构及说明
2017/11/27 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
nodejs中实现修改用户路由功能
2019/05/24 NodeJs
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
微信小游戏中three.js离屏画布的示例代码
2020/10/12 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
一则python3的简单爬虫代码
2014/05/26 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
详解numpy.meshgrid()方法使用
2019/08/01 Python
python实现猜拳小游戏
2020/04/05 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
解决django中form表单设置action后无法回到原页面的问题
2020/03/13 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
如何用SQL语句进行模糊查找
2015/09/25 面试题
教师年终个人自我评价
2013/10/04 职场文书
心得体会范文
2014/01/04 职场文书
冬季施工防火方案
2014/05/17 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
党员批评与自我批评发言稿
2014/10/14 职场文书
学生检讨书范文
2015/01/27 职场文书
学术会议领导致辞
2015/07/29 职场文书
「玫瑰之王的葬礼」舞台剧主视觉图公开
2022/03/21 日漫