格式化输出Json对象

1.调用方式:

alert(JsonUti.convertToString(jsonObj));  //jsonObj为json对象。

2.格式化输出Json对象方法定义:

var JsonUti = {
    //定义换行符
    n: "\n",

    //定义制表符
    t: "\t",

    //转换String
    convertToString: function(obj) {
        return JsonUti.__writeObj(obj, 1);
    },

    //写对象
    __writeObj: function(obj    //对象
                    , level             //层次(基数为1)
                    , isInArray) {       //此对象是否在一个集合内
        //如果为空,直接输出null
        if (obj == null) {
            return "null";
        }

        //为普通类型,直接输出值
        if (obj.constructor == Number || obj.constructor == Date || obj.constructor == String || obj.constructor == Boolean) {
            var v = obj.toString();
            var tab = isInArray ? JsonUti.__repeatStr(JsonUti.t, level - 1) : "";
            if (obj.constructor == String || obj.constructor == Date) {

                //时间格式化只是单纯输出字符串,而不是Date对象
                return tab + ("\"" + v + "\"");
            }

            else if (obj.constructor == Boolean) {
                return tab + v.toLowerCase();
            }
            else {
                return tab + (v);
            }
        }

        //写Json对象,缓存字符串
        var currentObjStrings = [];

        //遍历属性
        for (var name in obj) {
            var temp = [];

            //格式化Tab
            var paddingTab = JsonUti.__repeatStr(JsonUti.t, level);
            temp.push(paddingTab);

            //写出属性名
            temp.push(name + " : ");

            var val = obj[name];
            if (val == null) {
                temp.push("null");
            }
            else {
                var c = val.constructor;
                if (c == Array) { //如果为集合,循环内部对象
                    temp.push(JsonUti.n + paddingTab + "[" + JsonUti.n);
                    var levelUp = level + 2;    //层级+2
                    var tempArrValue = [];      //集合元素相关字符串缓存片段
                    for (var i = 0; i < val.length; i++) {
                        //递归写对象
                        tempArrValue.push(JsonUti.__writeObj(val[i], levelUp, true));
                    }

                    temp.push(tempArrValue.join("," + JsonUti.n));
                    temp.push(JsonUti.n + paddingTab + "]");
                }
                else if (c == Function) {
                    temp.push("[Function]");
                }
                else {
                    //递归写对象
                    temp.push(JsonUti.__writeObj(val, level + 1));
                }
            }

            //加入当前对象“属性”字符串
            currentObjStrings.push(temp.join(""));
        }

        return (level > 1 && !isInArray ? JsonUti.n : "")                       //如果Json对象是内部,就要换行格式化
                    + JsonUti.__repeatStr(JsonUti.t, level - 1) + "{" + JsonUti.n     //加层次Tab格式化
                    + currentObjStrings.join("," + JsonUti.n)                       //串联所有属性值
                    + JsonUti.n + JsonUti.__repeatStr(JsonUti.t, level - 1) + "}";   //封闭对象
    },

    __isArray: function(obj) {
        if (obj) {
            return obj.constructor == Array;
        }
        return false;
    },

    __repeatStr: function(str, times) {
        var newStr = [];
        if (times > 0) {
            for (var i = 0; i < times; i++) {
                newStr.push(str);
            }
        }
        return newStr.join("");
    }
};
时间: 2024-10-25 07:34:34

格式化输出Json对象的相关文章

Java - 格式化输出JSON字符串的两种方式

目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.58&l

Node读取和写入json,格式化输出json

今天是在深信服实习的第5天,接到任务要做产品的外语版,Web端的实习生目前只有我一个,前端和PHP的都要我来做... 现在需要一个写一个脚本,处理两个json文件,把Bjson文件在A中没有的中文词条都要找出来写入另外一个json,实际需求要复杂得多,先写个初步demo: var fs = require('fs'), path = require('path'); let ans = {}; //求一方的差集(不是严格意义上的差集,只是一边的) function diff(a, b) { va

【Python】格式化输出json

参考文档: Python JSON JSON 函数 使用 JSON 函数需要导入 json 库:import json. 函数 描述 json.dumps  将 Python 对象编码成 JSON 字符串 json.loads 将已编码的 JSON 字符串解码为 Python 对象 json.dumps json.dumps 用于将 Python 对象编码成 JSON 字符串. 实例 以下实例将数组编码为 JSON 格式数据: #!/usr/bin/python import json data

Log格式化输出JSON内容

以前常做的一件事就是把返回的json复制到格式化工具里看内容,Json格式化方法那么多直接格式化LOG不是很省事. 很早前写的简单LOG类(Log.java) import android.text.TextUtils; /** * 日志信息 * * @author Harlan Song * @createDate 2013-2-8 */ public class Log { /** * 日志开关 */ private static boolean isDebug = true; privat

nodejs写入json文件,格式化输出json的方法

假如我需要把data序列化成json字符串,然后写入data.json文件中,代码如下: 1 let str = JSON.stringify(data) 2 3 fs.writeFile('data.json',str,function(err){ 4 if (err) {res.status(500).send('Server is error...')} 5 }) 入json文件后,都会出现很恶心的一行式,看看 不能忍对不对!!! Vanilla JS的JSON.stringify()是可

html格式化输出JSON( 测试接口)

将 json 数据以美观的缩进格式显示出来,借助最简单的 JSON.stringify 函数就可以了,因为此函数还有不常用的后面2个参数. 见MDN https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify 的描述. 示例代码如下: <html> <head> <meta charset="utf-8" /> <

输出json对象

1 <html> 2 <head> 3 <script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> 4 </head> 5 <body> 6 <script> 7 var object1 = { 8 apple: 0, 9 banana: {weight: 52, price: 100}, 10 cherry: 9

怎么在命令行格式化输出json文件

见这里: http://stackoverflow.com/questions/352098/how-can-i-pretty-print-json 我选了一个最简单的,只需要通过npm安装: sudo npm install -g json 用起来也十分简单,比如cat sample.json|json 然后就是摘要中功能的实现了. 很简单,只需要把待处理的文本复制到剪切板.然后执行pbcopy < <(pbpaste|json)即可.不要太爽.

用shell格式化输出json内容

#json内容如下: [email protected]#cat test.txt [ { "id":"1" }, { "data":"231566" }, { "id":"2" }, { "data":"12345515" }, { "id":"3" }, { "data":"