zoukankan      html  css  js  c++  java
  • JS 解决json字符串转换成json树形输出

    问题: 后台获取一个字符串,格式为  string +jsonList+string+.....

    就是传过来一堆数据,然后其中包含了一个json格式的list, 我们希望能将它输出成树形结构显示,能够直观点。

    另外包含一些增加颜色,字符串截取的方法,可以自行调试。

    典型案例:  接口返回值

    转换前:

     转换后:

    上代码:

    /*
    * 根据Value格式化为带有换行、空格格式的HTML代码
    * @param strValue {String} 需要转换的值
    * @return {String}转换后的HTML代码
    * @example
    * getFormatCode("测 s试") => “测<br/>&nbsp试”
    */
    function getFormatCode(strValue){
    return strValue.replace(/ /g, '<br/>').replace(/ /g, '<br/>').replace(/s/g, '&nbsp;');
    }
    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*:)?|(true|false|null)|-?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;
    }

  • 相关阅读:
    KTorrent 2.1
    Krusader-双面板文件治理器
    VirtualBox 1.3.4
    QEMU 0.9.0 & QEMU Accelerator 1.3.0pre10
    Sweep:音频编辑器材
    USBSink-优盘同步备份东西
    玩转 MPlayer(1)
    玩转 MPlayer(2)
    活动目录之迁移
    再学 GDI+[26]: TGPPen 画笔对齐 SetAlignment
  • 原文地址:https://www.cnblogs.com/Ronaldo-HD/p/9210229.html
Copyright © 2011-2022 走看看