javascript对象封装后转换为json
2016-08-10 17:21
253 查看
之前写了一个在Object原型加上一个转换json的工具,有一些bug和瑕疵在里面,而且改变Object的原型不是一个好的做法。
正好项目中有要用到,所以就重新写了一个我们项目所需要的结构来进行转换。
下载地址:http://download.csdn.net/download/w172087242/9600079
建议使用Google浏览器进行测试,插件支持所有主流浏览器
首先是ywkj-util.js
然后是实体类空间ywkj-pojo.js
最后是bean空间ywkj-pojo-report.js
调用html代码:
正好项目中有要用到,所以就重新写了一个我们项目所需要的结构来进行转换。
下载地址:http://download.csdn.net/download/w172087242/9600079
建议使用Google浏览器进行测试,插件支持所有主流浏览器
首先是ywkj-util.js
/** * Created by littlehow on 2016/8/9 0009. * @author littlehow */ var YWKJ = {}; /** util命名空间 */ YWKJ.util = {}; /** 字符串连接 */ YWKJ.util.StringBuffer = function(){ this._value = []; this.add = this.append = function(s) { this._value.push(s); return this; } this.removeAdd = this.removeAppend = function() { this._value.pop(); return this; } this.valueOf = this.toString = function(split) { return this._value.join(split || ""); } this.getAddCnt = this.getAppendCnt = function(){ return this._value.length; } this.empty = this.clear = function(){ this._value = []; return this; } this.length = function(){ return this.toString().length; } } /** 获取对象toString */ YWKJ.util.getString = function(obj) { if (obj === undefined || obj === null) return null; if(typeof obj == "string"){ return '"' + obj + '"'; } else if(typeof obj == "date"){ return obj.getTime(); } else { return obj; } } /** 获取对象的jsonString */ YWKJ.util.forJsonString = function(obj) { if(obj === undefined || obj === null) return null; if(typeof obj == "function") return "{}"; var sb = new this.StringBuffer(); if(obj.constructor == Array) {//处理数组 if(obj.length == 0) return "[]"; sb.add("["); for(var i = 0, len = obj.length; i < len; i++){ var v = obj[i]; if(typeof v == "object") v = this.forJsonString(v); else v = this.getString(v); sb.add(v).add(", "); } if(sb.getAddCnt() > 1) sb.removeAdd(); return sb.add("]").toString(); }else if(typeof obj == "object"){ sb.add("{"); for(var i in obj){ var v = obj[i]; if(v === undefined || v === null) continue; var type = typeof v; if(type == "function"){ continue; } else{ if(typeof v == "object") v = this.forJsonString(v); else v = this.getString(v); sb.add('"').add(i).add('" : ').add(v).add(", "); } } if(sb.getAddCnt() > 1) sb.removeAdd(); return sb.add("}").toString(); } else { return null; } }
然后是实体类空间ywkj-pojo.js
/** * pojo.js file * @author littlehow * @time 2016-08-09 10:17 * @dependence ywkj-util.js */ /** pojo命名空间 */ YWKJ.pojo = {}; YWKJ.pojo.ParentFunctionBean = function(){ this.toJson = function() { return YWKJ.util.forJsonString(this); } }
最后是bean空间ywkj-pojo-report.js
/** * @author littlehow * @time 2016-08-09 11:55 * @dependence ywkj-pojo.js */ /** package report */ YWKJ.pojo.report = { p : YWKJ.pojo }; /** 浅继承 */ YWKJ.pojo.report.extendFunc = function(son, parent) { for(var i in parent) { if(!son.prototype[i]) {//不存在则可以继承 son.prototype[i] = parent[i]; } } } YWKJ.pojo.report.extendsAll = function() { var parent = new this.p.ParentFunctionBean(); this.extendFunc(this.ReportBase, parent); this.extendFunc(this.Column, parent); this.extendFunc(this.Param, parent); this.extendFunc(this.ReportBean, parent); this.extendFunc(this.Template, parent); this.extendFunc(this.Sql, parent); } /** * 方法继承bean * @constructor */ YWKJ.pojo.report.ParentFunctionBean = function(){ this.toJson = function() { return YWKJ.util.forJsonString(this); } } /** * 报表基础信息 * @param reportName * @param userId * @param userName * @param useFlag * @param platform * @constructor */ YWKJ.pojo.report.ReportBase = function(reportName, userId, userName, useFlag, platform) { this.reportName = reportName; this.createUserid = userId; this.createUser = userName; this.useState = useFlag; this.updateUserid = null; this.updateUser = null; this.id = null; this.platform = platform; } /** * 参数信息 * @param name * @param desc * @param code * @param type * @param map * @param _default * @constructor */ YWKJ.pojo.report.Param = function(name, desc, code, type, map, _default){ this.paramName = name; this.paramDesc = desc; this.paramCode = code; this.paramType = type; this.paramMap = map; this.paramDefault = _default; this.operType = null; this.id = null; } /** * 展示字段信息 * @param code * @param name * @param note * @constructor */ YWKJ.pojo.report.Column = function(code, name, note){ this.columnCode = code; this.columnName = name; this.note = note; this.operType = null; } /** * 语句信息 * @param sql * @param id * @constructor */ YWKJ.pojo.report.Sql = function(sql, id) { this.sql = sql; this.id = id; } /** * 模板信息pojo * @param content * @param sql * @param params * @param columns * @constructor */ YWKJ.pojo.report.Template = function(name, type, code, content, sql, soutNum, params, columns) { this.templateName = name; this.templateType = type; this.templateCode = code; this.content = content; this.sqlInfo = sql; this.soutNum = soutNum; this.params = params; this.columns = columns; this.operType = null; this.id = null; } /** * 报表信息 * @param base * @param templates * @constructor */ YWKJ.pojo.report.ReportBean = function(base, templates) { this.base = base; this.templates = templates; } /** * 执行继承 */ YWKJ.pojo.report.extendsAll();
调用html代码:
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>report json test</title> <script type="text/javascript" src="../js/ywkj-util.js"></script> <script type="text/javascript" src="../js/ywkj-pojo.js"></script> <script type="text/javascript" src="../js/ywkj-pojo-report.js"></script> </head> <body> <div id="mydiv" style="width:600px;background-color:black;color:orange;"></div> </body> <script type="text/javascript"> var $ = YWKJ.pojo.report; var columns = [new $.Column("userid","用户id","登录者"), new $.Column("userid","用户id","登录者")]; columns[0].operType = "2"; columns[1].operType = "1"; var params = [new $.Param("用户id", "用户id", "string1", "string", "userid", "171")]; params[0].operType = "3"; params[0].id = 777; var templates = [new $.Template("用户增长曲线图", "散点图", "x001", "这是是示例模板, 欢迎光临 ${userid}", new $.Sql("select * from user_info where userid=#{string1}", 133), 0, params, columns)]; templates[0].operType = "2"; templates[0].id = 168; var base = new $.ReportBase("用户浏览报表", null, null, false, "终端宝"); base.updateUserid = "18561561"; base.updateUser = "陈浩南"; var report = new $.ReportBean(base, templates); console.log(report.toJson()); console.log(base.toJson()); console.log(templates[0].toJson()); document.getElementById("mydiv").innerHTML = report.toJson(); console.log((new $.ReportBean()).toJson()); </script> </html>
相关文章推荐
- JavaScript 对象转换JSON字符串
- JavaScript对象与JSON字符串的相互转换
- JavaScript对象与JSON字符串的相互转换
- Javascript-自定义对象转换成JSon后如何再转换回自定义对象
- 使用Javascript/jQuery将javascript对象转换为json格式数据 - 海涛的CSDN博客 - 博客频道 - CSDN.NET
- JavaScript对象转换成JSON字符串及深度克隆方法
- javascript 对象转换 json 的插件
- javascript中将json格式字符串转换成json对象实例
- javascript 把字符串转换成json对象
- 在JAVASCRIPT中构建一个复杂的对象,并用JSON进行转换
- 转换json格式的日期为Javascript对象
- 转换json格式的日期为Javascript对象的函数
- 使用Javascript/jQuery将javascript对象转换为json格式数据
- javascript转换字符串为json对象的方法
- 使用Javascript/jQuery将javascript对象转换为json格式数据
- JavaScript对象与JSON字符串的相互转换
- JavaScript将对象转换为JSON
- JavaScript对象与JSON字符串的相互转换
- javascript JSON对象已字符串互相转换
- 封装将json对象转换为java集合对象