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;

    private static final String AUTHOR ="HARLAN -->";

    public static void debug(boolean status){
        isDebug = status;
    }

    public static void d(String tag, String message) {
        if (isDebug) {
            android.util.Log.d(tag,AUTHOR + message);
        }
    }

    public static void i(String tag, String message) {
        if (isDebug) {
            android.util.Log.i(tag, AUTHOR +message);
        }
    }

    /**
     * Json格式化输出
     * @param tag
     * @param message 内容
     * @param isOutputOriginalContent 是否输入原内容
     */
    public static void iJsonFormat(String tag, String message,boolean isOutputOriginalContent) {
        if (isDebug && !TextUtils.isEmpty(message)) {
            if(isOutputOriginalContent)
                android.util.Log.i(tag, AUTHOR + message);
            android.util.Log.i(tag, AUTHOR +"\n" + JsonUtils.format(StringUtils.convertUnicode(message)));
        }
    }

    public static void w(String tag, String message) {
        if (isDebug) {
            android.util.Log.w(tag,AUTHOR + message);
        }

    }

    public static void e(String tag, String message) {
        if (isDebug) {
            android.util.Log.e(tag,AUTHOR + message);
        }
    }
}
调用iJsonFormat就可以了,先把内容Unicode转换再格式化JSON,不然如果显示的是unicode后的内容中文看不出来也不方便.

Unicode解码方法,网上很多了。
 public static String convertUnicode(String ori) {
        char aChar;
        int len = ori.length();
        StringBuffer outBuffer = new StringBuffer(len);
        for (int x = 0; x < len; ) {
            aChar = ori.charAt(x++);
            if (aChar == ‘\\‘) {
                aChar = ori.charAt(x++);
                if (aChar == ‘u‘) {
                    // Read the xxxx
                    int value = 0;
                    for (int i = 0; i < 4; i++) {
                        aChar = ori.charAt(x++);
                        switch (aChar) {
                            case ‘0‘:
                            case ‘1‘:
                            case ‘2‘:
                            case ‘3‘:
                            case ‘4‘:
                            case ‘5‘:
                            case ‘6‘:
                            case ‘7‘:
                            case ‘8‘:
                            case ‘9‘:
                                value = (value << 4) + aChar - ‘0‘;
                                break;
                            case ‘a‘:
                            case ‘b‘:
                            case ‘c‘:
                            case ‘d‘:
                            case ‘e‘:
                            case ‘f‘:
                                value = (value << 4) + 10 + aChar - ‘a‘;
                                break;
                            case ‘A‘:
                            case ‘B‘:
                            case ‘C‘:
                            case ‘D‘:
                            case ‘E‘:
                            case ‘F‘:
                                value = (value << 4) + 10 + aChar - ‘A‘;
                                break;
                            default:
                                throw new IllegalArgumentException(
                                        "Malformed   \\uxxxx   encoding.");
                        }
                    }
                    outBuffer.append((char) value);
                } else {
                    if (aChar == ‘t‘)
                        aChar = ‘\t‘;
                    else if (aChar == ‘r‘)
                        aChar = ‘\r‘;
                    else if (aChar == ‘n‘)
                        aChar = ‘\n‘;
                    else if (aChar == ‘f‘)
                        aChar = ‘\f‘;
                    outBuffer.append(aChar);
                }
            } else
                outBuffer.append(aChar);

        }
        return outBuffer.toString();
    }
JSON格式化方法,同样是网上找的。
 public static String format(String jsonStr) {
        int level = 0;
        StringBuffer jsonForMatStr = new StringBuffer();
        for(int i=0;i<jsonStr.length();i++){
            char c = jsonStr.charAt(i);
            if(level>0&&‘\n‘==jsonForMatStr.charAt(jsonForMatStr.length()-1)){
                jsonForMatStr.append(getLevelStr(level));
            }
            switch (c) {
                case ‘{‘:
                case ‘[‘:
                    jsonForMatStr.append(c+"\n");
                    level++;
                    break;
                case ‘,‘:
                    jsonForMatStr.append(c+"\n");
                    break;
                case ‘}‘:
                case ‘]‘:
                    jsonForMatStr.append("\n");
                    level--;
                    jsonForMatStr.append(getLevelStr(level));
                    jsonForMatStr.append(c);
                    break;
                default:
                    jsonForMatStr.append(c);
                    break;
            }
        }

        return jsonForMatStr.toString();

    }

    private static String getLevelStr(int level){
        StringBuffer levelStr = new StringBuffer();
        for(int levelI = 0;levelI<level ; levelI++){
            levelStr.append("\t");
        }
        return levelStr.toString();
    }

END

				
时间: 2024-10-19 08:17:25

Log格式化输出JSON内容的相关文章

用shell格式化输出json内容

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

格式化输出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:

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

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文件

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

python日志输出的内容修改为json格式

业务中要求,python项目的日志输出为json串,同时包括异常:经过查看python logging相关的源码,发现还不能完全的兼容:比如异常的源码那里: class Formatter(object): """省略""" def format(self, record): record.message = record.getMessage() if self.usesTime(): record.asctime = self.formatT