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 While 循环基础教程
Apr 05 Javascript
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
Nov 23 Javascript
JavaScript中window、doucment、body的解释
Aug 14 Javascript
基于jquery的simpleValidate简易验证插件
Jan 31 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
Sep 05 Javascript
jquery自定义插件结合baiduTemplate.js实现异步刷新(附源码)
Dec 22 Javascript
JavaScript实现的select点菜功能示例
Jan 16 Javascript
使用百度地图实现地图网格的示例
Feb 06 Javascript
微信小程序中实现手指缩放图片的示例代码
Mar 13 Javascript
JS实现字符串翻转的方法分析
Aug 31 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
Nov 20 jQuery
基于js实现的图片拖拽排序源码实例
Nov 04 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延迟静态绑定示例分享
2014/06/22 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
javascript不同页面传值的改进版
2008/09/30 Javascript
JavaScript使用技巧精萃[代码非常实用]
2008/11/21 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
connect中间件session、cookie的使用方法分享
2014/06/17 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
JS+CSS实现自适应选项卡宽度的圆角滑动门效果
2015/09/15 Javascript
Bootstrap 3 按钮标签实例代码
2017/02/21 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
2017/06/13 Javascript
easyui下拉框动态级联加载的示例代码
2017/11/29 Javascript
使用async-validator编写Form组件的方法
2018/01/10 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
最简单的JS实现json转csv的方法
2019/01/10 Javascript
微信小程序开发之点击按钮退出小程序的实现方法
2019/04/26 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
Python中实现远程调用(RPC、RMI)简单例子
2014/04/28 Python
编写Python CGI脚本的教程
2015/06/29 Python
Python模拟登录验证码(代码简单)
2016/02/06 Python
Python编程实现粒子群算法(PSO)详解
2017/11/13 Python
解决Pycharm出现的部分快捷键无效问题
2018/10/22 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
详解Scrapy Redis入门实战
2020/11/18 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
总账会计岗位职责
2014/03/13 职场文书
2014年纪委工作总结
2014/12/05 职场文书
python中print格式化输出的问题
2021/04/16 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
win11如何查看端口是否被占用? Win11查看端口是否占用的技巧
2022/04/05 数码科技