// format json obj string
function format_json(txt, compress) {
var indentChar = '    ';
if (/^\s*$/.test(txt)) {
//alert('txt is empty');
return '';
}
try {
var data = eval('(' + txt + ')');
txt = txt.replace(new RegExp("\"{","gm"), "{").replace(new RegExp("}\"","gm"), "}");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); txt = txt.replace(new RegExp(" ","gm"), ""); // console.log(txt);
data = eval('(' + txt + ')');
} catch (e) {
//alert('txt format error: '+e.description,'err');
return txt;
}
;
var draw = [], last = false, This = this, line = compress ? ''
: '<br/>', nodeCount = 0, maxDepth = 0;
var notify = function(name, value, isLast, indent, formObj) {
if (indent == 0) {
//draw.push('<table>');
}
nodeCount++;
for (var i = 0, tab = ''; i < indent; i++)
tab += indentChar;
tab = compress ? '' : tab;
maxDepth = ++indent;
if (value && value.constructor == Array) {
draw.push(tab + (formObj ? ('"' + name + '":') : '') + '['
+ line);
for (var i = 0; i < value.length; i++)
notify(i, value[i], i == value.length - 1, indent,
false);
draw.push(tab + ']' + (isLast ? line : (',' + line)));
} else if (value && typeof value == 'object') {
draw.push(tab + (formObj ? ('"' + name + '":') : '') + '{'
+ line);
var len = 0, i = 0;
for ( var key in value)
len++;
for ( var key in value)
notify(key, value[key], ++i == len, indent, true);
draw.push(tab + '}' + (isLast ? line : (',' + line)));
} else {
if (typeof value == 'string')
value = '"' + value + '"';
draw.push(tab + (formObj ? ('"' + name + '":') : '')
+ value + (isLast ? '' : ',') + line);
}
;
};
var isLast = true, indent = 0; notify('', data, isLast, indent, false);
return draw.join('');
} function addIndentBlank(indent) {
indentChar = '&nbsp;&nbsp;&nbsp;&nbsp;';
var ret = "";
for (var i = 0; i < indent; i++) {
ret += indentChar;
}
return ret;
} // format all string
function format_str(txt) {
if (/^\s*$/.test(txt)) {
//alert('txt is empty');
return '';
}
try {
//var data = eval('(' + txt + ')');
txt = txt.replace(new RegExp("\"{","gm"), "{").replace(new RegExp("}\"","gm"), "}"); // "{->{ }"->}
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); // \"->"
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\"");
txt = txt.replace(new RegExp("\\\\\\\"","gm"), "\""); txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n");
txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n");
txt = txt.replace(new RegExp("\\\\\\\\r","gm"), "\\r");
txt = txt.replace(new RegExp("\\\\\\\\n","gm"), "\\n"); //txt = txt.replace(new RegExp("&nbsp;","gm"), ""); var draw = [];
var line = "<br/>";
var indent = 0;
var quoteCount = 0;
var quoteOddEven = 0; // Even count quote(") to deal, Odd is string
var containLeftBrace = false;
var preChar = '';
var nextChar = '';
for (var i = 0; i < txt.length; i++) {
current = txt.charAt(i);
try {
nextChar = txt.charAt(i + 1);
} catch (e) {
console.log(e);
}
switch (current) {
case '{':
containLeftBrace = true;
case '[': {
if (preChar == '\"') {
draw.push(current);
break;
}
if (quoteOddEven == 0) {
++indent;
draw.push(current);
draw.push(line);
draw.push(addIndentBlank(indent));
break;
} else {
draw.push(current);
break;
}
}
case '}':
case ']': {
if (nextChar == '\"') {
draw.push(current);
break;
}
if (quoteOddEven == 0) {
--indent;
draw.push(line);
draw.push(addIndentBlank(indent));
draw.push(current);
break;
} else {
draw.push(current);
break;
}
}
case ',': {
if (quoteOddEven == 0 && quoteCount > 0 && containLeftBrace) {
draw.push(current);
draw.push(line);
draw.push(addIndentBlank(indent));
break;
} else {
draw.push(current);
break;
}
}
case '\\': {
try {
next1 = txt.charAt(i+1);
next2 = txt.charAt(i+2);
next3 = txt.charAt(i+3);
// console.log(current + next1 + next2 + next3);
if ((next1 + "") == "r" && (current + next1 + next2 + next3) == "\\r\\n") {
draw.push(line);
draw.push(addIndentBlank(indent + 1));
i = i+3;
}
} catch(e) {
console.log(e);
}
break;
}
case '\"': {
quoteCount = quoteCount + 1;
quoteOddEven = (quoteOddEven + 1) % 2;
draw.push(current);
break;
}
default: {
draw.push(current);
}
}
preChar = current;
} // console.log('draw: ' + draw.join(''));
} catch (e) {
// alert('txt format error: '+e,'err');
return txt;
}
;
return draw.join('');
}

js/javascript format json(js/javascript 格式化json字符串)的更多相关文章

  1. 【Json】C#格式化JSON字符串

    很多时候我们需要将json字符串以 {     "status": 1,     "sum": 9 }这种方式显示,而从服务端取回来的时候往往是这样 {&quo ...

  2. vim调用python格式化json数据

    vim调用python格式化json数据 November 30, 2013GNU/Linuxpython3, Vimopenwares python有个标准模块叫json,用于编码/解码,序列化/按 ...

  3. 在JavaScript中使用json.js:Ajax项目之POST请求(异步)

    经常在百度搜索框输入一部分关键词后,弹出候选关键热词.现在我们就用Ajax技术来实现这一功能. 一.下载json.js文件 百度搜一下,最好到json官网下载,安全起见. 并与新建的两个文件部署如图 ...

  4. javascript、js操作json方法总结(json字符创转换json对象)

    相信前端的同学们对json并不陌生,接触过很多.但是很少人知道json的全称是什么,哈哈,我也是查资 料知道的.(JSON JavaScript Object Notation是一种轻量级的数据交换格 ...

  5. 在JavaScript中使用json.js:Ajax项目之GET请求(同步)

    1.用php编写一个提供数据的响应程序(phpdata.php) <?php $arr=array(1,2,3,4); //将数组编码为JSON格式的数据 $jsonarr=json_encod ...

  6. 在JavaScript中使用json.js:访问JSON编码的某个值

    演示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3. ...

  7. 在JavaScript中使用json.js:使得js数组转为JSON编码

    在json的官网中下载json.js,然后在script中引入,以使用json.js提供的两个关键方法. 1.数组对象.toJSONString() 这个方法将返回一个JSON编码格式的字符串,用来表 ...

  8. JSON(JavaScript Object Notation, JS 对象标记)

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言 ...

  9. JavaScript中解析JSON --- json.js 、 json2.js 以及 json3.js的使用区别

    JSON官方(http://www.json.org/)提供了一个json.js,json.js是JSON官方提供的在JavaScript中解析JSON的js包,json.js.json2.js.js ...

  10. JS 前端格式化JSON字符串工具

    JSON格式化工具,简易实现.作为技术宅,直接上代码,供大家使用.前提:一定要引入jquery哦. <!DOCTYPE html> <html lang="en" ...

随机推荐

  1. bootstrap validate 实现页面动态验证(formvalidate)

    关于基本的bootstrap validate 验证方法外面有许多博客上都有讲解,我就不在过多叙述了.大家也可以去看官网api:http://bv.doc.javake.cn/api/ 今天要说的是动 ...

  2. SQL Server子查询实例

    例子一 SELECT COUNT(*) FROM ( SELECT [PersonID] FROM [tbiz_AssScore] GROUP BY PersonID ) M 语法说明: 1).FRO ...

  3. KRPano资源分析工具使用说明(KRPano XML/JS解密 切片图批量下载 球面图还原 加密混淆JS还原美化)

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  4. 修改Glassfish默认密码,并允许远程登录

    修改默认密码 1.打开命令提示窗口,进入 glassfish/bin 目录: 2.输入命令 asadmin 进入管理模式: 接着输入: change-admin-password 注意默认密码为空,要 ...

  5. 鼠标划过用户名时在鼠标右下角显示div展示用户资料

    最近做一个网站论坛,为了方便会员之间相互了解,又不想再做一个页面展示用户资料,就想到了鼠标划过用户名时在鼠标右下角显示div展示用户资料这个效果, 这里要注意的该方法不是给每个用户名的旁边都绑定一个d ...

  6. express细节点注意

    删除 cookie 需要这么 res.cookie('admin_uid',"null",{maxAge:0, httpOnly:true, path:'/',domain:'.o ...

  7. Python下Json和Msgpack序列化比较

     最近用Python时,遇到了序列化对象的问题,传统的json和新型序列化工具包msgpack都有涉及,于是做一个简单的总结: 通俗的讲:序列化:将对象信息转化为可以存储或传输的形式:反序列化:把这个 ...

  8. ASP.NET知识总结(9.使用Cookies实现购物车)

    ListInfo.aspx向购物车的添加商品的方法 private void GouWu(string name, double price, string id) { //往购物车中添加商品 Htt ...

  9. Lintcode 175. 翻转二叉树

    -------------------- 递归那么好为什么不用递归啊...我才不会被你骗...(其实是因为用惯了递归啰嗦的循环反倒不会写了...o(╯□╰)o) AC代码: /** * Definit ...

  10. webpack

    webpack 通过一个主文件 .js ,webpack把这个文件所有的依赖文件,都处理打包成js文件 webpack 可以干嘛?1.执行打包 (把require()模块化整合成一个js文件给html ...