Android的格式JSONstring在ADB LOGCAT输出

为了logging目的,我打印出json响应string,并可以在androidadb logcat”命令中看到它们。 有没有办法在adb logcat输出中很好地格式化JSONstring,使其看起来像这样?

{ "code" : "0", "text" : "hello world" } 

Solutions Collecting From Web of "Android的格式JSONstring在ADB LOGCAT输出"

你可以使用JSONObject.toString()方法在logcat上打印JSON。

 Log.d("tag", jsonObject.toString(4)); 

产量

 (29124): { (29124): "text": "hello world", (29124): "code": "0" (29124): } 

我不打印代码中的JSON消息。 我只需双击Mac上的LogRabbit中的消息,它就会打印出来,或突出显示Base64来解码它。

在这里输入图像说明

完全披露,我是Mac的LogRabbit的创造者。

您可以使用我的logging器的代码格式化日志中的json与原始forms:

 Logger.dd("Section label", json); 

Github上的链接: https : //github.com/scijoker/logger

资源:

 import android.os.Build; import android.util.Log; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * Created by scijoker on 08.10.15. */ public class Logger { private static boolean DEBUG = true; public static void d(String tag, String arg) { if (isEnable()) { log(tag, arg); } } public static void d(String logMsg) { if (isEnable()) { log(getCurrentClassName(), getCurrentMethodName() + "(): " + logMsg); } } public static void dd(String tag, Object source) { if (isEnable()) { Object o = getJsonObjFromStr(source); if (o != null) { try { if (o instanceof JSONObject) { format(tag, ((JSONObject) o).toString(2)); } else if (o instanceof JSONArray) { format(tag, ((JSONArray) o).toString(2)); } else { format(tag, source); } } catch (JSONException e) { format(tag, source); } } else { format(tag, source); } } } private static void log(String tag, String msg) { Log.d(tag, msg); } private static String getSplitter(int length) { StringBuilder builder = new StringBuilder(); for (int i = 0; i < length; i++) { builder.append("-"); } return builder.toString(); } private static void format(String tag, Object source) { tag = " " + tag + " "; log(" ", " "); log(" ", getSplitter(50) + tag + getSplitter(50)); log(" ", "" + source); log(" ", getSplitter(100 + tag.length())); log(" ", " "); } private static String getCurrentMethodName() { return Thread.currentThread().getStackTrace()[4].getMethodName(); } private static String getCurrentClassName() { String className = Thread.currentThread().getStackTrace()[4].getClassName(); String[] temp = className.split("[\\.]"); className = temp[temp.length - 1]; return className; } private static Object getJsonObjFromStr(Object test) { Object o = null; try { o = new JSONObject(test.toString()); } catch (JSONException ex) { try { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { o = new JSONArray(test); } } catch (JSONException ex1) { return null; } } return o; } public static boolean isEnable() { return DEBUG; } public static void setEnable(boolean flag) { Logger.DEBUG = flag; } } 

fastJson提供了一个方法:

 //serialize a prettyFormat json string public static final String toJSONString(Object object, boolean prettyFormat); eg:Log.d(TAG,JSON.toJSONString(object, true));