格式化json数据


var formatJson = function(json, options) {
 var reg = null,
  formatted = '',
  pad = 0,
  PADDING = ''; 
 //one can also use '\t' or a different number of spaces
 // optional settings
 options = options || {};
 // remove newline where '{' or '[' follows ':'
 options.newlineAfterColonIfBeforeBraceOrBracket = (options.newlineAfterColonIfBeforeBraceOrBracket === true) ? true : false;
 // use a space after a colon
 options.spaceAfterColon = (options.spaceAfterColon === false) ? false : true;
 // begin formatting...
 if (typeof json !== 'string') {
  // make sure we start with the JSON as a string
  json = JSON.stringify(json);
 } else {
  // is already a string, so parse and re-stringify
  //in order to remove extra whitespace
  json = JSON.parse(json);
  json = JSON.stringify(json);
 }
 // add newline before and after curly braces
 reg = /([\{\}])/g;
 json = json.replace(reg, '\r\n$1\r\n');
 // add newline before and after square brackets
 reg = /([\[\]])/g;
 json = json.replace(reg, '\r\n$1\r\n');
 // add newline after comma
 reg = /(\,)/g;
 json = json.replace(reg, '$1\r\n');
 // remove multiple newlines
 reg = /(\r\n\r\n)/g;
 json = json.replace(reg, '\r\n');
 // remove newlines before commas
 reg = /\r\n\,/g;
 json = json.replace(reg, ',');
 // optional formatting...
 if (!options.newlineAfterColonIfBeforeBraceOrBracket) {  
  reg = /\:\r\n\{/g;
  json = json.replace(reg, ':{');
  reg = /\:\r\n\[/g;
  json = json.replace(reg, ':[');
 }
 if (options.spaceAfterColon) {   
  reg = /\:/g;
  json = json.replace(reg, ': ');
 }
 $.each(json.split('\r\n'), function(index, node) {
  var i = 0,
   indent = 0,
   padding = '';
  if (node.match(/\{$/) || node.match(/\[$/)) {
   indent = 1;
  } else if (node.match(/\}/) || node.match(/\]/)) {
   if (pad !== 0) {
    pad -= 1;
   }
  } else {
   indent = 0;
  }
  for (i = 0; i < pad; i++) {
   padding += PADDING;
  }
  formatted += padding + node + '\r\n';
  pad += indent;
 });
 return formatted;
};


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值