JS 解决json字符串转换成json树形输出
问题: 后台获取一个字符串,格式为 string +jsonList+string+.....
就是传过来一堆数据,然后其中包含了一个json格式的list, 我们希望能将它输出成树形结构显示,能够直观点。
另外包含一些增加颜色,字符串截取的方法,可以自行调试。
典型案例: 接口返回值
转换前:

转换后:

上代码:
/*
	 * 根据Value格式化为带有换行、空格格式的HTML代码
	 * @param strValue {String} 需要转换的值
	 * @return  {String}转换后的HTML代码
	 * @example  
	 * getFormatCode("测\r\n\s试")  =>  “测<br/> 试”
	 */
	function getFormatCode(strValue){
		return strValue.replace(/\r\n/g, '<br/>').replace(/\n/g, '<br/>').replace(/\s/g, ' ');
	}
	function convertJson(data){
		var fistSign = data.indexOf('{');
		var lastSign = data.lastIndexOf('}') 
		var dataStr = data.substring(fistSign,lastSign+1);
		var dataJson = {
			fistSign:fistSign,
			lastSign:lastSign,
			dataStr:dataStr
		}
		return dataJson;
	}
	//增加json颜色效果
	function syntaxHighlight(json) {
		if (typeof json != 'string') {
			json = JSON.stringify(json, undefined, 2);
		}
		json = json.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
		return json.replace(/("(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|null)\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?)/g, function(match) {
			var cls = 'number';
			if (/^"/.test(match)) {
				if (/:$/.test(match)) {
					cls = 'key';
				} else {
					cls = 'string';
				}
			} else if (/true|false/.test(match)) {
				cls = 'boolean';
			} else if (/null/.test(match)) {
				cls = 'null';
			}
			return '<span class="' + cls + '">' + match + '</span>';
		});
	}
	//替换函数 alldata为原本字符串
	//拼接字符串和Json组
	function joinJson(alldata){
		var fistSign = alldata.indexOf('----------');
		if(fistSign==-1)
			return alldata;
		var n=alldata.charAt(alldata.length-1);
		var lastSign = alldata.lastIndexOf(n);
		var source = alldata.substring(fistSign,lastSign+1);
source = getFormatCode(source);
		var fistS = source.indexOf('{');
		if(fistS==-1)
			return source;
		var dataShow = convertJson(source);
		var dataJson = eval('(' + dataShow.dataStr + ')');
			//console.log(dataJson); 
		var dataFormat = formatJson(dataJson);
			//增加一行换行
		dataFormat = '<br>'+dataFormat;
		dataFormat=syntaxHighlight(dataFormat);
		alldataStr = source.replace(dataShow.dataStr,dataFormat);
		return alldataStr;
	}
JS 解决json字符串转换成json树形输出的更多相关文章
- js如何把字符串转换成json数据的方法
		js如何把字符串转换成json数据的方法 function strtojson(str){ var json = eval('(' + str + ')'); return json; } 方法二 f ... 
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
		一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ... 
- JavaScript:将key和value不带双引号的JSON字符串转换成JSON对象的方法
		遇到相关的问题,花了两天的时间来解决,深感来之不易,所以做如下的总结,希望遇到此问题的码农能更快的找到解决办法! var jsonArr= [{col:TO_CHAR(HZRQ,'YYYYMM'),t ... 
- 特殊字符导致json字符串转换成json对象出错
		在对数据库取出来的数据(特别是描述信息)里面含有特殊字符的话,使用JSON.parse将json字符串转换成json对象的时候会出错,主要是双引号,回车换行等影响明显,左尖括号和右尖括号也会导致显示问 ... 
- js中把JSON字符串转换成JSON对象最好的方法
		在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ... 
- js中将json字符串转换成json对象
		在我们使用js请求后台控制器传回的结果result值的时候,经常会出现返回结果值为json字符串的情况,字符串无法在js中直接使用 返回样式栗子: 这是一个json字符串:result = " ... 
- [转载]将json字符串转换成json对象
		例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; J ... 
- JSON字符串转换成JSON对象
		字符串转对象(strJSON代表json字符串) var obj = eval(strJSON); var obj = strJSON.parseJSON(); var obj = JSON.pars ... 
- json字符串转换成json增删查改节点
		一.功能实现 1.节点树查询: 按ID查询树 2.节点新增: http://host/tree_data/node/${treeId} in: {node: {key: ..., ...}, pare ... 
随机推荐
- HTTP(搁置)
			HTTP请求 响应报头内容 Connection:keep-alive #当浏览器与服务器通信时对于长连接如何进行处理:close/keep-alive Content-Encoding:gzip # ... 
- <基础> PHP 进阶之 流程控制(Process)
			do-while $sum = 0; $i = 10; do{ $sum += $i; $i--; }while($i > 0); //当这里的值为 false 时跳出循环 echo $sum; ... 
- localStorage本地存储的用法
			localStorage用法 if(window.localStorage){ alert('这个浏览器支持本地存储'); }else{ alert('这个浏览器支持不本地存储'); } localS ... 
- java解析文件
			遇到两个小坑: 1.使用String.split,部分分隔符需要转义:https://www.cnblogs.com/mingforyou/archive/2013/09/03/3299569.htm ... 
- centos查看命令
			1.查看 CPU 物理个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看 CPU 核心数量 grep 'core id' /proc/ ... 
- AIR程序调用本地默认应用程序打开本地文件
			当我用下面语句的时候,可以成功打开桌面文件夹下面的文件: var file:File = File.desktopDirectory.resolvePath("test.jpg") ... 
- cvc-complex-type.2.4.a: Invalid content was found starting with element 'async-supported'. One of '{"http://java.sun.com/xml/ns/javaee":init-param}' is expected.
			第一种方案: 将 "http://java.sun.com/xml/ns/javaee" 换为 "http://java.sun.com/xml/ns/j2ee& ... 
- Java 配置环境变量教程
			[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ... 
- [PHP]json_encode增加options参数后支持中文
			---------------------------------------------------------------------------------------------------- ... 
- [Android] Robotium手机自动化测试(仅需apk安装包版)——环境搭建  【转】
			Robotium的手机自动化测试,很多都是利用app源代码里的Id定义来开发自动化脚本.而在我开始要为项目中的app写自动化测试脚本的时 候,开发的环境还很不稳定,app也还处于开发的状态中,而且,在 ... 
