JSON进阶七——AOP
小弟最近很迷恋JSON,以至于俺媳妇也吃起JSON的醋来(开个玩笑,呵呵)。至于小弟举的例子算不算面向切面(AOP),仁者见仁,智者见智。只是小弟对JSON的一种使用小技巧。
我可能使用AJAX,然后从后台调用一段数据,该数据可能是JSON格式的。
例如:{name:"张三",sex:1}
好了我们需要做的就是把sex转换成中文,当然你可以选择在后台处理,当然我们也会选择在前台完成?
当我们把数据一个一个放进对应的位置事,我们一般会这样做。
var json = {name:"张三",sex:1};
for(var f in json){
if (f == “sex”){
document.getElementById(f).value = josn[f] == 1 ? "男" : "女";
} else {
document.getElementById(f).value = josn[f];
}
}
for(var f in json){
if (f == “sex”){
document.getElementById(f).value = josn[f] == 1 ? "男" : "女";
} else {
document.getElementById(f).value = josn[f];
}
}
如果在来一个证件类型什么的,是不是我们还要在判断一次?
在来N个,我们是不是用Switch?
不~我们选择更好的方式。
var jsonEnum = {
sex: function(val){
var a = val == 1 ? "男" : "女";
return a;
},
idType: function(val){
var a = null;
switch(val){
..
}
}
};
var jsonBean = {
json:NaN,
Get: function(key){
if (jsonEnum[key]){
return jsonEnum[key](this.json[key]);
}
else {
return this.json[key];
}
}
};
var json = {name:"张三",sex:1,idType:1};
jsonBean.json = json;
for(var f in json){
alert(jsonBean.Get(f));
}
sex: function(val){
var a = val == 1 ? "男" : "女";
return a;
},
idType: function(val){
var a = null;
switch(val){
..
}
}
};
var jsonBean = {
json:NaN,
Get: function(key){
if (jsonEnum[key]){
return jsonEnum[key](this.json[key]);
}
else {
return this.json[key];
}
}
};
var json = {name:"张三",sex:1,idType:1};
jsonBean.json = json;
for(var f in json){
alert(jsonBean.Get(f));
}
jsonBean我们姑且可以把这个东西看成类似于Spring的容器,同时把jsonEnum当成一个配置文件,以及可扩展的类?同样的我们是不是可以通过一定的方式,做数据验证,组合等等,只要我们有这样一个“容器”JSON。