From 755348c4eb37ff6039b0cae4644955f53f8e9948 Mon Sep 17 00:00:00 2001 From: liyujiang Date: Sat, 22 Dec 2018 13:45:07 +0800 Subject: [PATCH 1/2] add map2String/object2String... --- .../com/blankj/utilcode/util/LogUtils.java | 59 ++++++++++++++++++- 1 file changed, 58 insertions(+), 1 deletion(-) 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 ecc20a11a2..c462185552 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 @@ -30,16 +30,22 @@ import java.io.StringWriter; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.net.UnknownHostException; import java.text.ParseException; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Date; import java.util.Formatter; import java.util.Iterator; +import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -341,11 +347,15 @@ private static String formatObject(Object object) { return iFormatter.format(object); } } + if (object instanceof String || object instanceof JSONObject || object instanceof JSONArray) + return object.toString(); if (object.getClass().isArray()) return LogFormatter.array2String(object); if (object instanceof Throwable) return LogFormatter.throwable2String((Throwable) object); if (object instanceof Bundle) return LogFormatter.bundle2String((Bundle) object); if (object instanceof Intent) return LogFormatter.intent2String((Intent) object); - return object.toString(); + if (object instanceof Map) return LogFormatter.map2String((Map) object); + if (object instanceof Collection) return LogFormatter.collection2String((Collection) object); + return LogFormatter.object2String(object); } private static void print2Console(final int type, @@ -982,6 +992,53 @@ static String intent2String(Intent intent) { return sb.toString(); } + static String map2String(Map map) { + JSONObject jsonObject = new JSONObject(map); + return jsonObject.toString(); + } + + static String collection2String(Collection collection) { + JSONObject jsonObject = new JSONObject(); + try { + jsonObject.put("size", collection.size()); + jsonObject.put("data", collection); + return jsonObject.toString(); + } catch (JSONException ignore) { + return collection.toString(); + } + } + + static String object2String(Object object) { + Class clazz = object.getClass(); + List tmp = Arrays.asList(clazz.getDeclaredFields()); + ArrayList list = new ArrayList<>(tmp); + while (clazz != Object.class) { + clazz = clazz.getSuperclass(); + if (clazz == null) { + break; + } + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + int modifier = field.getModifiers(); + if (Modifier.isPublic(modifier)) { + list.add(field); + } + } + } + Field[] a = new Field[list.size()]; + Field[] fields = list.toArray(a); + JSONObject jsonObject = new JSONObject(); + for (Field field : fields) { + String fieldName = field.getName(); + try { + Object obj = field.get(object); + jsonObject.put(fieldName, obj); + } catch (Exception ignore) { + } + } + return jsonObject.toString(); + } + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN) private static void clipData2String(ClipData clipData, StringBuilder sb) { ClipData.Item item = clipData.getItemAt(0); From d3c9986778d01e3085b33ea2834ac254e4c7b439 Mon Sep 17 00:00:00 2001 From: liyujiang Date: Sat, 22 Dec 2018 13:59:42 +0800 Subject: [PATCH 2/2] enhanced object2String --- .../java/com/blankj/utilcode/util/LogUtils.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) 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 c462185552..bd66a8c5b2 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 @@ -347,8 +347,6 @@ private static String formatObject(Object object) { return iFormatter.format(object); } } - if (object instanceof String || object instanceof JSONObject || object instanceof JSONArray) - return object.toString(); if (object.getClass().isArray()) return LogFormatter.array2String(object); if (object instanceof Throwable) return LogFormatter.throwable2String((Throwable) object); if (object instanceof Bundle) return LogFormatter.bundle2String((Bundle) object); @@ -1009,6 +1007,10 @@ static String collection2String(Collection collection) { } static String object2String(Object object) { + if (object instanceof String || object instanceof JSONObject || + object instanceof JSONArray) { + return object.toString(); + } Class clazz = object.getClass(); List tmp = Arrays.asList(clazz.getDeclaredFields()); ArrayList list = new ArrayList<>(tmp); @@ -1028,13 +1030,14 @@ static String object2String(Object object) { Field[] a = new Field[list.size()]; Field[] fields = list.toArray(a); JSONObject jsonObject = new JSONObject(); - for (Field field : fields) { - String fieldName = field.getName(); - try { + try { + jsonObject.put("object", object.toString()); + for (Field field : fields) { + String fieldName = field.getName(); Object obj = field.get(object); jsonObject.put(fieldName, obj); - } catch (Exception ignore) { } + } catch (Exception ignore) { } return jsonObject.toString(); }