JSON格式化JS代码,改变

要用JSON格式化工具,最强大的是http://json.parser.online.fr/,但是人家只让线上用。

其他的JSON格式化代码还是很多的,就是没人家强大,所以弄个代码,好好改了改。

把原作者的贴上:http://download.csdn.net/detail/wolf_410/5927367

把下面这些放到一个文件夹里就OK了,剩下的会慢慢改成和json.parser.online.fr一样的,但是需要时间,慢慢更新。

代码块:s.css

@charset "utf-8";
/* CSS Document */
div.ControlsRow, div.HeadersRow {
	font-family: Consolas;
}

.CodeContainer span
{
    line-height: 17px;
    font-size: 11px;
    font-family: Consolas;
}

div.Canvas
{
    font-family: Lucida Console, Georgia;
    font-size: 13px;
    background-color:#ECECEC;
    color:#000000;
    border:solid 1px #CECECE;
}

.ObjectBrace
{
    color:#00AA00;
    font-weight:bold;
}

.String:before
{
    content: "string";
    background-color: #4E9A06;
    border-radius: 2px 2px 2px 2px;
    color: #FFFFFF;
    font-weight: bold;
    margin: 0 2px;
    opacity: 0.4;
    padding: 1px 5px;
    word-wrap: normal;
}


.ObjectBrace:before 
{
    content: "object";
    background-color: #729FCF;
    border-radius: 2px 2px 2px 2px;
    color: #FFFFFF;
    font-weight: bold;
    margin: 0 2px;
    opacity: 0.4;
    padding: 1px 5px;
    word-wrap: normal;
}

.Number:before
{
    content: "Number";
    background-color: #AD7FA8;
    border-radius: 2px 2px 2px 2px;
    color: #FFFFFF;
    font-weight: bold;
    margin: 0 2px;
    opacity: 0.4;
    padding: 1px 5px;
    word-wrap: normal;
}

.ArrayBrace:before
{
    content: "Array";
    background-color: #A40000;
    border-radius: 2px 2px 2px 2px;
    color: #FFFFFF;
    font-weight: bold;
    margin: 0 2px;
    opacity: 0.4;
    padding: 1px 5px;
    word-wrap: normal;
}

.Boolean:before
{
    content: "Boolean";
    background-color: #C4A000;
    border-radius: 2px 2px 2px 2px;
    color: #FFFFFF;
    font-weight: bold;
    margin: 0 2px;
    opacity: 0.4;
    padding: 1px 5px;
    word-wrap: normal;
}

.ArrayBrace
{
    color:#0033FF;
    font-weight:bold;
}

.PropertyName
{
    color:#CC0000;
    font-weight:bold;
}

.String
{
    color:#007777;
}

.Number
{
    color:#AA00AA;
}

.Boolean
{
    color:#0000FF;
}

.Function
{
    color:#AA6633;
    text-decoration:italic;
}

.Null
{
    color:#0000FF;
}

.Comma
{
    color:#000000;
    font-weight:bold;
}

PRE.CodeContainer
{
    margin-top:0px;
    margin-bottom:0px;
}

PRE.CodeContainer img
{
    cursor:pointer;
    border:none;
    margin-bottom:-1px;
}

#CollapsibleViewDetail a
{
    padding-left:10px;
}

#ControlsRow
{
    white-space:nowrap;
    font: 11px Georgia;
}

#TabSizeHolder
{
    padding-left:10px;
    padding-right:10px;
}

#HeaderTitle
{
    text-align:right;
    font-size:11px;
}

#HeaderSubTitle
{
    margin-bottom:2px;
    margin-top:0px
}

#RawJson
{
    width:99%;
    height:120px;
}

A.OtherToolsLink 
{
    color:#555;
    text-decoration:none; 
}

A.OtherToolsLink:hover 
{ 
    text-decoration:underline; 
}

代码块:m.js

	_uacct = "UA-2223138-1";
	urchinTracker();
function onLoad() {
    var version = getSilverlightVersion();
    if (version) { __utmSetVar(version); }
}
function getSilverlightVersion() {

    var version = 'No Silverlight';

    var container = null;

    try {

        var control = null;

        if (window.ActiveXObject) {

            control = new ActiveXObject('AgControl.AgControl');

        }

        else {

            if (navigator.plugins['Silverlight Plug-In']) {

                container = document.createElement('div');

                document.body.appendChild(container);

                container.innerHTML= '<embed type="application/x-silverlight" src="data:," />';

                control = container.childNodes[0];

            }

        }

        if (control) {

            if (control.isVersionSupported('5.0')) { version = 'Silverlight/5.0'; }

            else if (control.isVersionSupported('4.0')) { version = 'Silverlight/4.0'; }

            else if (control.isVersionSupported('3.0')) { version = 'Silverlight/3.0'; }

            else if (control.isVersionSupported('2.0')) { version = 'Silverlight/2.0'; }
            else if (control.isVersionSupported('1.0')) { version = 'Silverlight/1.0'; }
        }
    }
    catch (e) { }
    if (container) {
        document.body.removeChild(container);
    }
    return version;
}
onLoad();

代码块:c.js

window.SINGLE_TAB = "  ";
window.ImgCollapsed = "Collapsed.gif";
window.ImgExpanded = "Expanded.gif";
window.QuoteKeys = true;
function $id(id){ return document.getElementById(id); }
function IsArray(obj) {
  return  obj && 
          typeof obj === 'object' && 
          typeof obj.length === 'number' &&
          !(obj.propertyIsEnumerable('length'));
}

function Process(){
  SetTab();
  window.IsCollapsible = $id("CollapsibleView").checked;
  var json = $id("RawJson").value;
  var html = "";
  try{
    if(json == "") json = "\"\"";
    var obj = eval("["+json+"]");
    html = ProcessObject(obj[0], 0, false, false, false);
    $id("Canvas").innerHTML = "<PRE class='CodeContainer'>"+html+"</PRE>";
  }catch(e){
    alert("JSON数据格式不正确:\n"+e.message);
    $id("Canvas").innerHTML = "";
  }
}
window._dateObj = new Date();
window._regexpObj = new RegExp();
function ProcessObject(obj, indent, addComma, isArray, isPropertyContent){
  var html = "";
  var comma = (addComma) ? "<span class='Comma'>,</span> " : ""; 
  var type = typeof obj;
  var clpsHtml ="";
  if(IsArray(obj)){
    if(obj.length == 0){
      html += GetRow(indent, "<span class='ArrayBrace'>[ ]</span>"+comma, isPropertyContent);
    }else{
      clpsHtml = window.IsCollapsible ? "<span><img src=\""+window.ImgExpanded+"\" onClick=\"ExpImgClicked(this)\" /></span><span class='collapsible'>" : "";
      html += GetRow(indent, "<span class='ArrayBrace'>[</span>"+clpsHtml, isPropertyContent);
      for(var i = 0; i < obj.length; i++){
        html += ProcessObject(obj[i], indent + 1, i < (obj.length - 1), true, false);
      }
      clpsHtml = window.IsCollapsible ? "</span>" : "";
      html += GetRow(indent, clpsHtml+"<span class='ArrayBrace'>]</span>"+comma);
    }
  }else if(type == 'object'){
    if (obj == null){
        html += FormatLiteral("null", "", comma, indent, isArray, "Null");
    }else if (obj.constructor == window._dateObj.constructor) { 
        html += FormatLiteral("new Date(" + obj.getTime() + ") /*" + obj.toLocaleString()+"*/", "", comma, indent, isArray, "Date"); 
    }else if (obj.constructor == window._regexpObj.constructor) {
        html += FormatLiteral("new RegExp(" + obj + ")", "", comma, indent, isArray, "RegExp"); 
    }else{
      var numProps = 0;
      for(var prop in obj) numProps++;
      if(numProps == 0){
        html += GetRow(indent, "<span class='ObjectBrace'>{ }</span>"+comma, isPropertyContent);
      }else{
        clpsHtml = window.IsCollapsible ? "<span><img src=\""+window.ImgExpanded+"\" onClick=\"ExpImgClicked(this)\" /></span><span class='collapsible'>" : "";
        html += GetRow(indent, "<span class='ObjectBrace'>{</span>"+clpsHtml, isPropertyContent);

        var j = 0;

        for(var prop in obj){

          var quote = window.QuoteKeys ? "\"" : "";

          html += GetRow(indent + 1, "<span class='PropertyName'>"+quote+prop+quote+"</span>: "+ProcessObject(obj[prop], indent + 1, ++j < numProps, false, true));

        }

        clpsHtml = window.IsCollapsible ? "</span>" : "";

        html += GetRow(indent, clpsHtml+"<span class='ObjectBrace'>}</span>"+comma);

      }

    }

  }else if(type == 'number'){

    html += FormatLiteral(obj, "", comma, indent, isArray, "Number");

  }else if(type == 'boolean'){

    html += FormatLiteral(obj, "", comma, indent, isArray, "Boolean");

  }else if(type == 'function'){

    if (obj.constructor == window._regexpObj.constructor) {

        html += FormatLiteral("new RegExp(" + obj + ")", "", comma, indent, isArray, "RegExp"); 

    }else{

        obj = FormatFunction(indent, obj);

        html += FormatLiteral(obj, "", comma, indent, isArray, "Function");

    }

  }else if(type == 'undefined'){

    html += FormatLiteral("undefined", "", comma, indent, isArray, "Null");

  }else{

    html += FormatLiteral(obj.toString().split("\\").join("\\\\").split('"').join('\\"'), "\"", comma, indent, isArray, "String");

  }

  return html;

}

function FormatLiteral(literal, quote, comma, indent, isArray, style){

  if(typeof literal == 'string')

    literal = literal.split("<").join("<").split(">").join(">");

  var str = "<span class='"+style+"'>"+quote+literal+quote+comma+"</span>";

  if(isArray) str = GetRow(indent, str);

  return str;

}

function FormatFunction(indent, obj){

  var tabs = "";

  for(var i = 0; i < indent; i++) tabs += window.TAB;

  var funcStrArray = obj.toString().split("\n");

  var str = "";

  for(var i = 0; i < funcStrArray.length; i++){

    str += ((i==0)?"":tabs) + funcStrArray[i] + "\n";

  }

  return str;

}

function GetRow(indent, data, isPropertyContent){

  var tabs = "";

  for(var i = 0; i < indent && !isPropertyContent; i++) tabs += window.TAB;

  if(data != null && data.length > 0 && data.charAt(data.length-1) != "\n")

    data = data+"\n";

  return tabs+data;                       

}

function CollapsibleViewClicked(){

  $id("CollapsibleViewDetail").style.visibility = $id("CollapsibleView").checked ? "visible" : "hidden";

  Process();

}



function QuoteKeysClicked(){

  window.QuoteKeys = $id("QuoteKeys").checked;

  Process();

}



function CollapseAllClicked(){

  EnsureIsPopulated();

  TraverseChildren($id("Canvas"), function(element){

    if(element.className == 'collapsible'){

      MakeContentVisible(element, false);

    }

  }, 0);

}

function ExpandAllClicked(){

  EnsureIsPopulated();

  TraverseChildren($id("Canvas"), function(element){

    if(element.className == 'collapsible'){

      MakeContentVisible(element, true);

    }

  }, 0);

}

function MakeContentVisible(element, visible){

  var img = element.previousSibling.firstChild;

  if(!!img.tagName && img.tagName.toLowerCase() == "img"){

    element.style.display = visible ? 'inline' : 'none';

    element.previousSibling.firstChild.src = visible ? window.ImgExpanded : window.ImgCollapsed;

  }

}

function TraverseChildren(element, func, depth){

  for(var i = 0; i < element.childNodes.length; i++){

    TraverseChildren(element.childNodes[i], func, depth + 1);

  }

  func(element, depth);

}

function ExpImgClicked(img){

  var container = img.parentNode.nextSibling;

  if(!container) return;

  var disp = "none";

  var src = window.ImgCollapsed;

  if(container.style.display == "none"){

      disp = "inline";

      src = window.ImgExpanded;

  }

  container.style.display = disp;

  img.src = src;

}

function CollapseLevel(level){

  EnsureIsPopulated();

  TraverseChildren($id("Canvas"), function(element, depth){

    if(element.className == 'collapsible'){

      if(depth >= level){

        MakeContentVisible(element, false);

      }else{

        MakeContentVisible(element, true);  

      }

    }

  }, 0);

}

function TabSizeChanged(){

  Process();

}

function SetTab(){

  var select = $id("TabSize");

  window.TAB = MultiplyString(parseInt(select.options[select.selectedIndex].value), window.SINGLE_TAB);

}

function EnsureIsPopulated(){

  if(!$id("Canvas").innerHTML && !!$id("RawJson").value) Process();

}

function MultiplyString(num, str){

  var sb =[];

  for(var i = 0; i < num; i++){

    sb.push(str);

  }

  return sb.join("");

}

function SelectAllClicked(){



  if(!!document.selection && !!document.selection.empty) {

    document.selection.empty();

  } else if(window.getSelection) {

    var sel = window.getSelection();

    if(sel.removeAllRanges) {

      window.getSelection().removeAllRanges();

    }

  }



  var range = 

      (!!document.body && !!document.body.createTextRange)

          ? document.body.createTextRange()

          : document.createRange();

  

  if(!!range.selectNode)

    range.selectNode($id("Canvas"));

  else if(range.moveToElementText)

    range.moveToElementText($id("Canvas"));

  

  if(!!range.select)

    range.select($id("Canvas"));

  else

    window.getSelection().addRange(range);

}

function LinkToJson(){

  var val = $id("RawJson").value;

  val = escape(val.split('/n').join(' ').split('/r').join(' '));

  $id("InvisibleLinkUrl").value = val;

  $id("InvisibleLink").submit();

}

代码块:index.htm

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>原生json格式化及高亮</title>
<meta name="description" content="json,格式化,高亮">
<meta name="keywords" content="json,格式化,高亮">
<script src="c.js" type="text/javascript"></script>
<link href="s.css" type="text/css" rel="stylesheet"></link>
</head>
<body>
<div class="HeadersRow">
  <div id="HeaderTitle"> JSON格式化及高亮  © 2012   <span style='color:#aaa;font-weight:bold;font-style:italic'>Random_Coder</span> </div>
  <h3 id="HeaderSubTitle">JSON格式化及高亮:</h3>
  <textarea id="RawJson">
  </textarea>
</div>
<div id="ControlsRow">
  <input type="Button" value="格式化" οnclick="Process()"/>
  <span id="TabSizeHolder">
    缩进量
    <select id="TabSize" οnchange="TabSizeChanged()">
      <option value="1">1</option>
      <option value="2" selected="true">2</option>
      <option value="3">3</option>
      <option value="4">4</option>
      <option value="5">5</option>
      <option value="6">6</option>
    </select>
  </span>
  <label for="QuoteKeys">
    <input type="checkbox" id="QuoteKeys" οnclick="QuoteKeysClicked()" checked="true" /> 
    引号
  </label>  
  <a href="javascript:void(0);" οnclick="SelectAllClicked()">全选</a>
   
  <span id="CollapsibleViewHolder" >
      <label for="CollapsibleView">
        <input type="checkbox" id="CollapsibleView" οnclick="CollapsibleViewClicked()" checked="true" /> 
        显示控制
      </label>
  </span>
  <span id="CollapsibleViewDetail">
    <a href="javascript:void(0);" οnclick="ExpandAllClicked()">展开</a>
    <a href="javascript:void(0);" οnclick="CollapseAllClicked()">叠起</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(3)">2级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(4)">3级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(5)">4级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(6)">5级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(7)">6级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(8)">7级</a>
    <a href="javascript:void(0);" οnclick="CollapseLevel(9)">8级</a>
  </span>
</div>
<div id="Canvas" class="Canvas"></div>
<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
<script type="text/javascript" src="m.js"></script>
</body>
</html>


还有两张图片:

Collapsed.gif 

Expanded.gif 


ajax

$.ajax({
dataType:"String",
type:'get',
url:'json.html',
success: function(data){
 $("#RawJson").val(data);
 alert(data)
}
});



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 第一个简单的jQuery程序 jQuery事件的链式写法 控制jQuery对象 jQuery控制CSS样式 第2章 使用JavaScript实现隔行变色 使用jQuery选择器实现隔行变色 JavaScript代码检测页面元素 jQuery代码检测页面元素 使用jQuery基本选择器 使用jQuery层次选择器 使用jQuery基本过滤选择器 使用jQuery内容过滤选择器 使用jQuery可见性过滤选择器 使用jQuery属性过滤选择器 使用jQuery子元素过滤选择器 使用jQuery表单对象属性过滤选择器 使用jQuery表单过滤选择器 第3章 DOM树状文档 获取元素的属性 设置元素的属性 设置元素的属性 获取或设置元素的内容 获取或设置元素的值 直接设置元素样式值 增加CSS类别 类别切换 动态创建节点元素 动态插入节点方法 动态插入节点方法 复制元素节点 替换元素节点 包裹元素节点 遍历元素 删除元素 数据管理 第4章 事件中的冒泡现象 bind方法绑定事件 映射方式绑定不同的事件 切换事件hover 切换事件toggle 移除事件unbind 其他事件one 其他事件trigger 文本框中的事件应用 列表框中事件应用 列表中的导航菜单应用 网页选项卡应用 删除记录时的提示效果 第5章 show()与hide()方法 动画效果的show()与hide()方法 toggle()方法 slideDown()与slideUp()方法 slideToggle()方法 fadeIn()和fadeOut()方法 fadeTo()方法 简单的动画 移动位置的动画 队列中的动画 动画停止和延时 动画方式浏览图片 第6章 传统的JavaScript方法实现Ajax功能 load()方法实现Ajax功能 getJSON函数获取数据 getScript函数获取数据 get实现异步获取xml文档数据 $.get发送请求 $.post发送请求 serialize()序列化表单 $.ajax()方法发送请求 第7章 validate验证插件 form表单插件 cookie插件 autocomplete插件 notesforlightbox插件 ContextMenu插件 JQZoom放大镜插件 编写一个对象级别的插件 编写一个类级别的插件 uploadify文件上传插件 第8章 使用draggable插件实现对象的拖曳操作 使用droppable插件实现对象的置放操作 使用sortable插件实现列表中表项的拖曳排序操作 使用accordion插件实现区域块的折叠操作 使用datepicker插件实现选择日期的操作一 使用datepicker插件实现选择日期的操作二 使用tabs插件展示选项卡的基本功能 使用dialog插件弹出提示和确定信息对话框 使用jQuery UI插件以拖动方式管理相册 第9章 使用browser对象获取浏览器信息 使用boxModel对象检测是否是W3C盒子模型 使用$.each()工具函数遍历数组 使用$.each()工具函数遍历ajaxSettings对象 使用$.grep()工具函数筛选数组中的元素 使用$.map()工具函数变更数组中的元素 使用$.inArray()工具函数搜索数组中指定元素的位置 使用$.trim()工具函数除掉字符串的空格符 使用$.isEmptyObject()函数检测对象是否为空 使用$.isPlainObject()函数检测对象是否为原始对象 使用$.contains()函数检测两个节点是否包含 使用$.param()进行数组元素序列化 使用函数$.extend()扩展工具函数 使用函数$.proxy()改变事件函数的作用域 使用jQuery扩展工具函数实现对字符串指定类型的检测< 第10章 在指定的查找范围内获取DOM元素 选择器中含有空格符与不含空格符的区别 事件中的target方法优化冒泡现象 使用data()方法在元素上存取移数据 使用data()方法在元素上存取移JSON格式的数据 解决jQuery库先于其他库导入时变量“$”的使用权 解决jQuery库后于其他库导入时变量“$”的使用权 使用子查询优化选择器性能 减少对DOM元素直接操作 DOM对象与jQuery对象的类型转换 第11章 应用案例-聊天室系统 应用案例_图片切割
好的,下面是使用jQuery实现的代码: ```html <!DOCTYPE html> <html> <head> <title>JSON Table Scroll</title> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <style type="text/css"> #table-container { height: 200px; overflow: auto; } table { border-collapse: collapse; width: 100%; } th, td { padding: 8px; text-align: left; border-bottom: 1px solid #ddd; } th { background-color: #f2f2f2; } </style> </head> <body> <div id="table-container"> <table id="json-table"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> </tr> </thead> <tbody> </tbody> </table> </div> <script type="text/javascript"> // 定义一个 json 对象 var data = [ {"name": "张三", "age": 18, "sex": "男"}, {"name": "李四", "age": 20, "sex": "女"}, {"name": "王五", "age": 22, "sex": "男"}, {"name": "赵六", "age": 24, "sex": "女"}, {"name": "钱七", "age": 26, "sex": "男"}, {"name": "孙八", "age": 28, "sex": "女"}, {"name": "周九", "age": 30, "sex": "男"}, {"name": "吴十", "age": 32, "sex": "女"} ]; // 生成表格内容 function generateTableContent(data) { var content = ''; for (var i = 0; i < data.length; i++) { content += '<tr>'; content += '<td>' + data[i].name + '</td>'; content += '<td>' + data[i].age + '</td>'; content += '<td>' + data[i].sex + '</td>'; content += '</tr>'; } return content; } // 初始化表格 function initTable() { $('#json-table tbody').html(generateTableContent(data)); } // 定时更新表格内容 function updateTable() { $.ajax({ url: 'data.json', dataType: 'json', success: function(result) { data = result; $('#json-table tbody').html(generateTableContent(data)); } }); } $(document).ready(function() { initTable(); setInterval(function() { updateTable(); }, 5000); // 每5秒更新一次表格内容 }); </script> </body> </html> ``` 解释一下代码: 1. 首先引入了jQuery库,并定义了一些CSS样式,其中`#table-container`设置了固定高度和滚动条,以实现表格自动滚动显示。 2. 在HTML中定义了一个空表格,并给每一列设置了表头。 3. 在JavaScript代码中定义了一个JSON对象`data`,用来存储表格的内容。 4. `generateTableContent()`函数用于根据`data`生成表格的内容。 5. `initTable()`函数用于初始化表格,即将`data`中的内容生成到HTML中。 6. `updateTable()`函数用于更新表格内容,通过Ajax请求获取服务器端的JSON数据,并将其赋值给`data`,然后重新生成表格内容。 7. 在`$(document).ready()`函数中,调用`initTable()`函数初始化表格,并使用`setInterval()`函数定时调用`updateTable()`函数更新表格内容,以实现表格自动滚动显示和内容自动更新。 注意:上面的代码中使用了`$.ajax()`函数发起了一个Ajax请求,并且假设服务器端返回的JSON数据格式与`data`相同。你需要把这个URL改成你自己的URL,或者使用其他的Ajax函数实现数据的获取。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值