zoukankan      html  css  js  c++  java
  • JS

    一 使用原生 JSON.stringify 实现

    <textarea name="" id="myTA" cols="30" rows="10"></textarea>
    <script>
        var myTA = document.getElementById("myTA");
        myTA.value = JSON.stringify({"aaa":123,"bbb":456}, null, 4)
    </script>
    

    二 自己写函数实现

    https://jsfiddle.net/q2gnX/

    在线预览

    // Notes:
    // - json2.js is not needed if browser supports JSON.stringify and JSON.parse natively
    // - jQuery is only used to place the results
    // colon;冒号,pad;填补
    var formatJson = function(json, options) {
      var reg = null,
        formatted = "",
        pad = 0,
        PADDING = "    "; // one can also use '	' or a different number of spaces
    
      // optional settings
      options = options || {};
      // remove newline where '{' or '[' follows ':'
      options.newlineAfterColonIfBeforeBraceOrBracket =
        options.newlineAfterColonIfBeforeBraceOrBracket === true ? true : false;
      // use a space after a colon
      options.spaceAfterColon = options.spaceAfterColon === false ? false : true;
    
      // begin formatting...
    
      // make sure we start with the JSON as a string
      if (typeof json !== "string") {
        json = JSON.stringify(json);
      }
      // parse and stringify in order to remove extra whitespace
      // json = JSON.stringify(JSON.parse(json));可以除去多余的空格
      json = JSON.parse(json);
      json = JSON.stringify(json);
    
      // add newline before and after curly braces
      reg = /([{}])/g;
      json = json.replace(reg, "
    $1
    ");
    
      // add newline before and after square brackets
      reg = /([[]])/g;
      json = json.replace(reg, "
    $1
    ");
    
      // add newline after comma
      reg = /(\,)/g;
      json = json.replace(reg, "$1
    ");
    
      // remove multiple newlines
      reg = /(
    
    )/g;
      json = json.replace(reg, "
    ");
    
      // remove newlines before commas
      reg = /
    \,/g;
      json = json.replace(reg, ",");
    
      // optional formatting...
      if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
        reg = /:
    {/g;
        json = json.replace(reg, ":{");
        reg = /:
    [/g;
        json = json.replace(reg, ":[");
      }
      if (options.spaceAfterColon) {
        reg = /:/g;
        json = json.replace(reg, ": ");
      }
    
      $.each(json.split("
    "), function(index, node) {
        var i = 0,
          indent = 0,
          padding = "";
    
        if (node.match(/{$/) || node.match(/[$/)) {
          indent = 1;
        } else if (node.match(/}/) || node.match(/]/)) {
          if (pad !== 0) {
            pad -= 1;
          }
        } else {
          indent = 0;
        }
    
        for (i = 0; i < pad; i++) {
          padding += PADDING;
        }
    
        formatted += padding + node + "
    ";
        pad += indent;
      });
    
      return formatted;
    };
    
    var json = {};
    
    // display formatted JSON (as JSON object)
    json = {
      a: {
        aa: [
          1,
          2,
          { aaa: "abc", bbb: "defgh", ccc: 987 },
          [100, 200, 300, { one: 1, two: "ii", three: "Three" }, 1000]
        ],
        bb: "xyz",
        ccc: 777
      },
      b: ["qqq", "www", "eee"],
      c: "hello",
      d: 12345
    };
    $("#formattedJson1").text(formatJson(json));
    
    // display formatted JSON (from JSON string)
    json =
      '{       "a": {         "aa": [             1,            2,            {                 "aaa": "abc",' +
      '                 "bbb": "defgh",                 "ccc": 987             },             [       100,       ' +
      '200,                     300             ,            { "one": 1, "two"  : "ii", "three"  ' +
      ': "Three" }, 1000 ]' +
      "         ],         " +
      '            "bb":         "xyz",         "ccc": 777     },     "b": [ "qqq", "www", ' +
      '"eee" ],     "c": "hello",     "d": 12345 }';
    $("#formattedJson2").text(formatJson(json));
    
  • 相关阅读:
    脚本 页面截取
    net Email 发送(借助第三方)
    查询表、存储过程、触发器的创建时间和最后修改时间(转)
    ActionScript简介
    mysql 1064 USING BTREE问题
    浅谈SQL SERVER函数count()
    程序员学习能力提升三要素
    构建杀手级应用的 JavaScript 框架、工具和技术
    javascript刷新页面方法大全
    html页<![if IE]>...<![endif]>使用解说
  • 原文地址:https://www.cnblogs.com/jffun-blog/p/11674561.html
Copyright © 2011-2022 走看看