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 相关文章推荐
ie7+背景透明文字不透明超级简单的实现方法
Jan 17 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
jquery获取及设置outerhtml的方法
Mar 09 Javascript
基于Bootstrap实现tab标签切换效果
Apr 15 Javascript
AngularJS中一般函数参数传递用法分析
Nov 22 Javascript
详解能在多种前端框架下使用的表格控件
Jan 11 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
vue移动端项目缓存问题实践记录
Oct 29 Javascript
package.json配置文件构成详解
Aug 27 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
Sep 02 Javascript
vue实现百度搜索功能
Dec 28 Javascript
利用 JavaScript 实现并发控制的示例代码
Dec 31 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
Terran历史背景
2020/03/14 星际争霸
php入门小知识
2008/03/24 PHP
PHP 日,周,月点击排行统计
2012/01/11 PHP
PHP字符串word末字符实现大小写互换的方法
2014/11/10 PHP
ThinkPHP中order()使用方法详解
2016/04/19 PHP
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
用jquery统计子菜单的条数示例代码
2013/10/18 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
JS控制弹出新页面窗口位置和大小的方法
2015/03/02 Javascript
jquery马赛克拼接翻转效果代码分享
2015/08/24 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
深入理解Angular.JS中的Scope继承
2017/06/04 Javascript
AngularJS实现tab选项卡的方法详解
2017/07/05 Javascript
基于wordpress的ajax写法详解
2018/01/02 Javascript
微信小程序实现的一键连接wifi功能示例
2019/04/24 Javascript
jQuery实现简易QQ聊天框
2020/02/10 jQuery
浅谈Ant Design Pro 菜单自定义 icon
2020/11/17 Javascript
python中pygame针对游戏窗口的显示方法实例分析(附源码)
2015/11/11 Python
Python应用库大全总结
2018/05/30 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
Python递归函数实例讲解
2019/02/27 Python
django页面跳转问题及注意事项
2019/07/18 Python
Python+OpenCv制作证件图片生成器的操作方法
2019/08/21 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
常用的10个Python实用小技巧
2020/08/10 Python
巧用 CSS3的webkit-box-reflect 倒影实现各类动效
2021/03/05 HTML / CSS
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
100%有机精油,美容油:House of Pure Essence
2018/10/30 全球购物
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
2014年庆元旦活动方案
2014/02/15 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
机关干部作风整顿心得体会
2016/01/22 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS