封装JSON数据转自定义HTML方法parseHTML
2013-09-18 13:49
211 查看
开发过程中经常使用字符串拼接,这样做工作效率低,可维护性和易读性也比较差,
且对于后台程序员对html不熟悉,经常出错。后来得到灵感,再添了个改进版:《原生JS不到30行,实现类似javascript MVC的功能-minTemplate》
如下面例子json转字符串:
var json = [{
href:'http://www.cnblogs.com/dreamback/',
title: 'dreamback\'s blog',
text: 'dreamback'
}, {
href:'http://www.cnblogs.com/dreamback/',
title: '孟回头的博客',
text: '孟回头'
}];
传统拼接:
var html = '';
for(var i = 0 , len = json.length ; i < len ; i++){
html += '<a href="'+href+'" title="' + title +'">' + text + '</a>';
}
要是可以这样:
var template = '<a href="{href}" title="{title}">{text}</a>';
var html = parseHTML(template, json);
字符串中{key}对应json中key的值,直接转换想要的字符串,显得简单的了!
是json中的值返回的结果有多种情况我们可以这么来: 1 var data = [{
2 name:'蜡笔小新',
3 sex:0
4 },{
5 name:'小丸子',
6 sex:1
7 },{
8 name:'凹凸曼',
9 sex:-1
}];
var template = '姓名:{name},性别:{sex};<br>';
var html = parseHTML(template, json,function(key, val){
//如果是{sex}对应的数值返回相应的文字
if(key == 'sex'){
return ['保密','男','女'][val+1];
}
return val;
});
parseHTML函数的源码:
1 /**
2 * JSON数据转自定义HTML.
3 * @param {String} template 模版参数模版的变量名要与JSON的key值对应,
4 * 且模版的变量名要用"{}"包住。
5 * @param {Object} json JSON数据,只接收类似[{},{}...]格式的JOSN。
6 * @param {String} result 开头默认的字符串,也被内部递归利用。
7 * @param {Function} fn 回调函数前面两个参数分别对应json的,key 可 value
8 * @return {String} 返回转义的HTML。
9 */
function parseHTML(template, json, fn, result){
result = result || '';
if(Object.prototype.toString.call(json) === '[object Array]'){
var first = json.shift();
result += template.replace(/\{([^{}]+)\}/g, function(match, key) {
var val = first[key];
if(fn){
return fn(key, val);
}
return val !== undefined ? val : '';
});
return json.length !== 0 ?
parseHTML(template, json, fn, result) : //递归
result;
}else{
alert('只接收数组形式的JSON数据!');
}
};
转载请注明出处:http://www.cnblogs.com/dreamback
如有任何建议或疑问,欢迎留言讨论。
且对于后台程序员对html不熟悉,经常出错。后来得到灵感,再添了个改进版:《原生JS不到30行,实现类似javascript MVC的功能-minTemplate》
如下面例子json转字符串:
var json = [{
href:'http://www.cnblogs.com/dreamback/',
title: 'dreamback\'s blog',
text: 'dreamback'
}, {
href:'http://www.cnblogs.com/dreamback/',
title: '孟回头的博客',
text: '孟回头'
}];
传统拼接:
var html = '';
for(var i = 0 , len = json.length ; i < len ; i++){
html += '<a href="'+href+'" title="' + title +'">' + text + '</a>';
}
要是可以这样:
var template = '<a href="{href}" title="{title}">{text}</a>';
var html = parseHTML(template, json);
字符串中{key}对应json中key的值,直接转换想要的字符串,显得简单的了!
是json中的值返回的结果有多种情况我们可以这么来: 1 var data = [{
2 name:'蜡笔小新',
3 sex:0
4 },{
5 name:'小丸子',
6 sex:1
7 },{
8 name:'凹凸曼',
9 sex:-1
}];
var template = '姓名:{name},性别:{sex};<br>';
var html = parseHTML(template, json,function(key, val){
//如果是{sex}对应的数值返回相应的文字
if(key == 'sex'){
return ['保密','男','女'][val+1];
}
return val;
});
parseHTML函数的源码:
1 /**
2 * JSON数据转自定义HTML.
3 * @param {String} template 模版参数模版的变量名要与JSON的key值对应,
4 * 且模版的变量名要用"{}"包住。
5 * @param {Object} json JSON数据,只接收类似[{},{}...]格式的JOSN。
6 * @param {String} result 开头默认的字符串,也被内部递归利用。
7 * @param {Function} fn 回调函数前面两个参数分别对应json的,key 可 value
8 * @return {String} 返回转义的HTML。
9 */
function parseHTML(template, json, fn, result){
result = result || '';
if(Object.prototype.toString.call(json) === '[object Array]'){
var first = json.shift();
result += template.replace(/\{([^{}]+)\}/g, function(match, key) {
var val = first[key];
if(fn){
return fn(key, val);
}
return val !== undefined ? val : '';
});
return json.length !== 0 ?
parseHTML(template, json, fn, result) : //递归
result;
}else{
alert('只接收数组形式的JSON数据!');
}
};
转载请注明出处:http://www.cnblogs.com/dreamback
如有任何建议或疑问,欢迎留言讨论。
相关文章推荐
- 封装JSON数据转自定义HTML方法parseHTML
- Laravel自定义 封装便捷返回Json数据格式引用
- 通过LIBXML2解析XML后,以JSON-C格式封装数据反馈给HTML
- APP接口(2)json封装数据方法
- jQuery 数据 - jQuery.data() 方法和HTML 5 的自定义 data-* 属性
- php 封装json xml通讯数据方法 php开发APP接口
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- 数据库查回来数据封装成Javabean再转json(有Date类型不能转json处理方法)
- zTree联想终极篇-->将存储树形数据表封装成自定义TreeNode-->将自定义TreeNode解析成JSON树形字串
- jQuery中ajax请求后台返回json数据并渲染HTML的方法
- html中通过JS获取JSON数据并加载的方法
- 客户端封装数据为json格式的数据提交到服务端的方法
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- form表单数据封装成json格式并提交给服务器的实现方法
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
- Ajax与jQuery-利用$.get()和$.post()方法传递html,xml,json数据
- JSON数据中带有HTML标签解决方法
- jquery ajax调用后台方法返回json数据转自http://www.cnblogs.com/xiaoxi/archive/2011/03/31/2000803.html
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)