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 相关文章推荐
js获取变量
Aug 24 Javascript
jquery select下拉框操作的一些说明
Apr 02 Javascript
时间戳转换为时间 年月日时间的JS函数
Aug 19 Javascript
jquery 追加tr和删除tr示例代码
Sep 12 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
Oct 29 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
Feb 28 Javascript
vuejs 单文件组件.vue 文件的使用
Jul 28 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
Nov 02 Javascript
微信小程序模板和模块化用法实例分析
Nov 28 Javascript
vue2.0.js的多级联动选择器实现方法
Feb 09 Javascript
React中获取数据的3种方法及优缺点
Feb 18 Javascript
ES11屡试不爽的新特性,你用上了几个
Oct 21 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
zf框架的Filter过滤器使用示例
2014/03/13 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php使用google地图应用实例
2014/12/31 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
Thinkphp5行为使用方法汇总
2017/12/21 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
多浏览器支持的右下角浮动窗口
2010/04/01 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
理解javascript函数式编程中的闭包(closure)
2016/03/08 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
通过js示例讲解时间复杂度与空间复杂度
2019/08/06 Javascript
Python 第一步 hello world
2009/09/25 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
为女性购买传统的印度服装和婚纱:Kalkifashion
2019/07/22 全球购物
会展中心部门工作职责
2013/11/27 职场文书
部队领导证婚词
2014/01/12 职场文书
高中军训感想800字
2014/02/23 职场文书
服装设计师职业生涯规划范文
2014/02/28 职场文书
总经理助理的职责
2014/03/14 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
厨师长岗位职责范本
2014/08/25 职场文书
写给医院的感谢信
2015/01/22 职场文书
2015年采购工作总结
2015/04/10 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
vue实现简易音乐播放器
2022/08/14 Vue.js