今天在学习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。