diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java index d9fc894bb6568d2b174569460fba9b84e327068e..1a6236b9075d1ce0f7794df2ce14212b4e4b231a 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/JsonUtils.java @@ -204,4 +204,21 @@ public final class JsonUtils { return defaultValue; } } + + public static String formatJson(final String json) { + return formatJson(json, 4); + } + + public static String formatJson(final String json, final int indentSpaces) { + try { + if (json.startsWith("{")) { + return new JSONObject(json).toString(indentSpaces); + } else if (json.startsWith("[")) { + return new JSONArray(json).toString(indentSpaces); + } + } catch (JSONException e) { + e.printStackTrace(); + } + return json; + } } diff --git a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java index bcacf0f5e5fd1c583945e182f179b7af5715766e..599e61c08227720a3a417e10d3865774f2e39439 100644 --- a/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java +++ b/utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java @@ -38,7 +38,9 @@ import java.lang.reflect.Type; import java.net.UnknownHostException; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.Arrays; import java.util.Collection; +import java.util.Collections; import java.util.Date; import java.util.Formatter; import java.util.Iterator; @@ -784,9 +786,7 @@ public final class LogUtils { private static class LogFormatter { static String object2String(Object object) { - if (object.getClass().isArray()) return object2Json(object); - if (object instanceof Collection) return object2Json(object); - if (object instanceof Map) return object2Json(object); + if (object.getClass().isArray()) return array2String(object); if (object instanceof Throwable) return throwable2String((Throwable) object); if (object instanceof Bundle) return bundle2String((Bundle) object); if (object instanceof Intent) return intent2String((Intent) object); @@ -798,7 +798,7 @@ public final class LogUtils { return formatJson(object.toString()); } try { - return GSON.toJson(object); + return formatJson(GSON.toJson(object)); } catch (Throwable t) { return object.toString(); } @@ -1021,6 +1021,29 @@ public final class LogUtils { sb.append("NULL"); sb.append("}"); } + + private static String array2String(Object object) { + if (object instanceof Object[]) { + return Arrays.deepToString((Object[]) object); + } else if (object instanceof boolean[]) { + return Arrays.toString((boolean[]) object); + } else if (object instanceof byte[]) { + return Arrays.toString((byte[]) object); + } else if (object instanceof char[]) { + return Arrays.toString((char[]) object); + } else if (object instanceof double[]) { + return Arrays.toString((double[]) object); + } else if (object instanceof float[]) { + return Arrays.toString((float[]) object); + } else if (object instanceof int[]) { + return Arrays.toString((int[]) object); + } else if (object instanceof long[]) { + return Arrays.toString((long[]) object); + } else if (object instanceof short[]) { + return Arrays.toString((short[]) object); + } + throw new IllegalArgumentException("Array has incompatible type: " + object.getClass()); + } } private static Class getTypeClassFromParadigm(final IFormatter formatter) { diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java index 136359448e1383688f3644325905d611ca3d1a7d..b4a8123b03823dece83eb81691ef59662f714589 100644 --- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java +++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/BaseTest.java @@ -7,6 +7,7 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowLog; +import org.robolectric.shadows.ShadowLooper; /** *
@@ -22,6 +23,8 @@ public class BaseTest {
 
     public BaseTest() {
         ShadowLog.stream = System.out;
+        ReflectUtils.reflect("com.blankj.utilcode.util.ThreadUtils$Deliver")
+                .field("MAIN_HANDLER", null);
         Utils.init(RuntimeEnvironment.application);
     }
 
diff --git a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
index 593f494f301f5a4e546a567d632f25ce88e5f365..191e67bd5cbf456e6495bdc3e7874d9e5d24b405 100644
--- a/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
+++ b/utilcode/lib/src/test/java/com/blankj/utilcode/util/LogUtilsTest.java
@@ -31,7 +31,7 @@ public class LogUtilsTest extends BaseTest {
     private static final int[]               ONE_D_ARRAY = new int[]{1, 2, 3};
     private static final int[][]             TWO_D_ARRAY = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
     private static final ArrayList   LIST        = new ArrayList<>();
-    private static final Map MAP         = new HashMap<>();
+    private static final Map MAP         = new HashMap<>();
 
     @Test
     public void testV() {
@@ -172,13 +172,11 @@ public class LogUtilsTest extends BaseTest {
         LIST.add(new Application());
 
         MAP.put("name", "AndroidUtilCode");
-        MAP.put("class", "LogUtils");
+        MAP.put("class", new Application());
         LogUtils.d((Object) ONE_D_ARRAY);
         LogUtils.d((Object) TWO_D_ARRAY);
-        LogUtils.d(formatJson(collection2String(LIST)));
+        LogUtils.d(LIST);
         LogUtils.d(MAP);
-
-        LogUtils.d(array2String(TWO_D_ARRAY));
     }
 
     static String collection2String(Collection collection) {
@@ -206,29 +204,6 @@ public class LogUtilsTest extends BaseTest {
         return json;
     }
 
-    static String array2String(Object object) {
-        if (object instanceof Object[]) {
-            return Arrays.deepToString((Object[]) object);
-        } else if (object instanceof boolean[]) {
-            return Arrays.toString((boolean[]) object);
-        } else if (object instanceof byte[]) {
-            return Arrays.toString((byte[]) object);
-        } else if (object instanceof char[]) {
-            return Arrays.toString((char[]) object);
-        } else if (object instanceof double[]) {
-            return Arrays.toString((double[]) object);
-        } else if (object instanceof float[]) {
-            return Arrays.toString((float[]) object);
-        } else if (object instanceof int[]) {
-            return Arrays.toString((int[]) object);
-        } else if (object instanceof long[]) {
-            return Arrays.toString((long[]) object);
-        } else if (object instanceof short[]) {
-            return Arrays.toString((short[]) object);
-        }
-        throw new IllegalArgumentException("Array has incompatible type: " + object.getClass());
-    }
-
 
     static class Person {