用js模拟PHP的print_r功能

最近参与一个PHP与flash交互的项目,数据格式采用json。一些返回信息中包含中文,中文字符值大于 255 的以 %uxxxx 格式存储,不利于调试代码。同事提供了一个网址,可以把json数据通过Ajax在服务器端解析,并返回经过语法着色的关联数组,非常清晰。

 

我抱着学习的目的,用js模拟了该功能。主要是递归处理对象:

 

 $(document).ready(function(){
    $('#btn').click(function(){
      var jsonStr = $('#jsonData').val();
      var json = eval('('+jsonStr+')');
      (function(){
        var print_r = function(o, depth) {
          var result = '';
          depth || (depth=1);
          var indent = new Array(4*depth+1).join(' ');
          var indentNext = new Array(4*(depth+1)+1).join(' ');
          var indentNextTwo = new Array(4*(depth+2)+1).join(' ');
          var tmp = '';
          var type = typeof o;
          switch(type) {
            case 'string':
            case 'number':
            case 'boolean':
            case 'undefined':
            case 'function':
              tmp += indent + indentNext + o + "\n";
              break;
            case 'object':
            default:
              for(var key in o) {
                tmp += indentNextTwo + '[' + key + '] = ';
                tmp += print_r(o[key], (depth+1));
              }
          }
          result += type + "\n";
          result += indentNext + '(' + "\n";
          result += tmp;
          result += indentNext + ')' + "\n";
          return result;
        };
        alert(print_r(json));
      }(json));
    });
  });

 注:上述代码需要jquery框架

 

-------------

演示

-------------

输入:{"error":["\u627e\u4e0d\u5230\u8be5\u6848\u4ef6\u4fe1\u606f"]}

弹出:

 

打印出类似print_r的关联数组

 

完整的html demo文件,请下载。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值