今天在学习Jsonp的时候,想通过服务端返回一段json数据,因为使用的服务端是NodeJs,那么就需要在js文件中实现返回json。(这里不懂的同学,可以先了解一下NodeJs的基础概念,在这里,我想大家推荐一个Nodejs视频 http://www.icoolxue.com/album/show/89)。
首先,我们有这样一个json格式
var json={name:"xlt",age:25}
如果我们直接把上面这个”json对象“返回给客户端,那么客户端都不知道怎么接受(至于为什么客户端接受不了,可以查询一下html相关的文档),所以这个把我们就需要把这个对象转化为一个字符串,然后在返回给客户端。因此我自己写了一个转化方法
//入口方法 function json2str(obj) { var S = []; for(var i in obj){ obj[i] = typeof obj[i] == 'string' ?'"'+obj[i]+'"' :(Object.prototype.toString.apply(obj[i]) === '[object Object]' ?json2str(obj[i]) :(Object.prototype.toString.apply(obj[i]) === '[object Array]' ?array2str(obj[i]) :obj[i]) ); S.push(i+':'+obj[i]); } return '{'+S.join(',')+'}'; } //辅助方法 function array2str(array) { var S=[]; var ret; for(var i=0;i<array.length;i++) { ret= json2str(array[i]); S.push(ret); } return '['+S.join(',')+']'; }
然后,我们现在使用这个方法,就可以得到相应的字符串,由于代码比较简单,就不做详解了。
当然对于比较复杂的json对象,我也做了考虑。比如说
var json={name:"xlt",age:25,sister:{name:"xlp",age:28}};
或者更复杂的下面这种
var json={name:"xlt",age:25,sister:[{name:"xlp",age:28},{name:"xll",age:29}]};
最后呢,我从网上找了一些关于json转化的资料。大家可以参考一下 https://github.com/douglascrockford/JSON-js/blob/master/json2.js。