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 相关文章推荐
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
May 17 Javascript
jQuery表格插件datatables用法总结
Sep 05 Javascript
深入理解JavaScript系列(34):设计模式之命令模式详解
Mar 03 Javascript
js中this用法实例详解
May 05 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
Jul 27 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
AngularJS 使用ng-repeat报错 [ngRepeat:dupes]
Jan 19 Javascript
详解vue项目打包后通过百度的BAE发布到网上的流程
Mar 05 Javascript
vue实现word,pdf文件的导出功能
Jul 31 Javascript
vue-cli3环境变量与分环境打包的方法示例
Feb 18 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
详解TypeScript的基础类型
Feb 18 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
压力如何影响浓缩咖啡品质
2021/03/03 咖啡文化
php 错误处理经验分享
2011/10/11 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
javascript获得网页窗口实际大小的示例代码
2013/09/21 Javascript
防止jQuery ajax Load使用缓存的方法小结
2014/02/22 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
浅谈javascript中的数据类型转换
2016/12/27 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
全面解析Node.js 8 重要功能和修复
2017/06/02 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
2019/12/16 Javascript
js实现旋转木马轮播图效果
2020/01/10 Javascript
Python标准库之sqlite3使用实例
2014/11/25 Python
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
使用Python发送各种形式的邮件的方法汇总
2015/11/09 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
2018/10/14 Python
python 将list转成字符串,中间用符号分隔的方法
2018/10/23 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
印尼购物网站:iLOTTE
2019/10/16 全球购物
荷兰度假屋租赁网站:Aan Zee
2020/02/28 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
创联软件面试题笔试题
2012/10/07 面试题
优秀党员主要事迹
2014/01/19 职场文书
致接力运动员广播稿
2014/02/17 职场文书
机关会计岗位职责
2014/04/08 职场文书
经济贸易系求职信
2014/08/04 职场文书
党员转正大会主持词
2015/07/02 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript