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 ...
随机推荐
- 使用Quartz框架定时发送预警邮件
1. Quartz定时发送预警邮件 1.1. 需求及实现思路 定时查询库存预警信息,一旦存在库存预警的商品,则发邮件通知相关人员 1.2. Quartz框架 Quartz是OpenSymph ...
- MiniDao支持ID自增主键策略,使用讲解
用法示例: /** * 插入数据(ID采用自增策略,并返回自增ID) * @param employee */ @IdAutoGenerator(generator="native" ...
- java byte[]与十六进制字符串相互转换
http://blog.csdn.net/worm0527/article/details/69939307 http://blog.csdn.net/androiddeveloper_lee/art ...
- 使用linux的shell脚本实现在当前行重复动态显示时间等字符串信息(不另起新行)
###本脚本在Suse11sp2当中验证正确 #!/bin/sh )) do echo -ne "\r$(date)" sleep 0.3 done ###关键在 echo 的 & ...
- beyondCompare工具使用
1.下载beyondcompare (从官网下载) 2.载入.class文件比对 参见: beyond compare 对class文件反编译及比较 (https://blog.csdn.net/ ...
- jetty 入门
jetty因其能作为内嵌的应用服务器,随应用一起存在,在小批量应用中很受欢迎. jetty作为应用服务器: jetty下载: 在官网下载jetty:http://www.eclipse.org/jet ...
- Idea使用Maven异常 --- Maven网络代理设置
在conf/setting.xml和m2/repository/setting.xml中加入: <proxies> <!-- proxy | Specification for on ...
- fwrite()中参数含义——size和count经常用搞反
函数原型:size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream); 注意:这个函数以二进制形式对文件进 ...
- MVC异步控制器加载一个网页的所有内容
public void PageAsync() { AsyncManager.OutstandingOperations.Increment(); WebRequest req = WebReques ...
- PowerDesigner 修改table背景色
Tools->Display Preferences(显示参数选择)->Format->Table->Modify->Fill->Fill color 出处:htt ...