Skip to content

Commit a13e3f7

Browse files
authored
Merge pull request Blankj#765 from gzu-liyujiang/master
enhanced object to string in LogUtils
2 parents a712286 + d3c9986 commit a13e3f7

File tree

1 file changed

+61
-1
lines changed

1 file changed

+61
-1
lines changed

utilcode/lib/src/main/java/com/blankj/utilcode/util/LogUtils.java

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,22 @@
3030
import java.io.StringWriter;
3131
import java.lang.annotation.Retention;
3232
import java.lang.annotation.RetentionPolicy;
33+
import java.lang.reflect.Field;
34+
import java.lang.reflect.Modifier;
3335
import java.lang.reflect.ParameterizedType;
3436
import java.lang.reflect.Type;
3537
import java.net.UnknownHostException;
3638
import java.text.ParseException;
3739
import java.text.SimpleDateFormat;
40+
import java.util.ArrayList;
3841
import java.util.Arrays;
42+
import java.util.Collection;
3943
import java.util.Date;
4044
import java.util.Formatter;
4145
import java.util.Iterator;
46+
import java.util.List;
4247
import java.util.Locale;
48+
import java.util.Map;
4349
import java.util.Set;
4450
import java.util.concurrent.ExecutorService;
4551
import java.util.concurrent.Executors;
@@ -345,7 +351,9 @@ private static String formatObject(Object object) {
345351
if (object instanceof Throwable) return LogFormatter.throwable2String((Throwable) object);
346352
if (object instanceof Bundle) return LogFormatter.bundle2String((Bundle) object);
347353
if (object instanceof Intent) return LogFormatter.intent2String((Intent) object);
348-
return object.toString();
354+
if (object instanceof Map) return LogFormatter.map2String((Map) object);
355+
if (object instanceof Collection) return LogFormatter.collection2String((Collection) object);
356+
return LogFormatter.object2String(object);
349357
}
350358

351359
private static void print2Console(final int type,
@@ -982,6 +990,58 @@ static String intent2String(Intent intent) {
982990
return sb.toString();
983991
}
984992

993+
static String map2String(Map map) {
994+
JSONObject jsonObject = new JSONObject(map);
995+
return jsonObject.toString();
996+
}
997+
998+
static String collection2String(Collection collection) {
999+
JSONObject jsonObject = new JSONObject();
1000+
try {
1001+
jsonObject.put("size", collection.size());
1002+
jsonObject.put("data", collection);
1003+
return jsonObject.toString();
1004+
} catch (JSONException ignore) {
1005+
return collection.toString();
1006+
}
1007+
}
1008+
1009+
static String object2String(Object object) {
1010+
if (object instanceof String || object instanceof JSONObject ||
1011+
object instanceof JSONArray) {
1012+
return object.toString();
1013+
}
1014+
Class<?> clazz = object.getClass();
1015+
List<Field> tmp = Arrays.asList(clazz.getDeclaredFields());
1016+
ArrayList<Field> list = new ArrayList<>(tmp);
1017+
while (clazz != Object.class) {
1018+
clazz = clazz.getSuperclass();
1019+
if (clazz == null) {
1020+
break;
1021+
}
1022+
Field[] fields = clazz.getDeclaredFields();
1023+
for (Field field : fields) {
1024+
int modifier = field.getModifiers();
1025+
if (Modifier.isPublic(modifier)) {
1026+
list.add(field);
1027+
}
1028+
}
1029+
}
1030+
Field[] a = new Field[list.size()];
1031+
Field[] fields = list.toArray(a);
1032+
JSONObject jsonObject = new JSONObject();
1033+
try {
1034+
jsonObject.put("object", object.toString());
1035+
for (Field field : fields) {
1036+
String fieldName = field.getName();
1037+
Object obj = field.get(object);
1038+
jsonObject.put(fieldName, obj);
1039+
}
1040+
} catch (Exception ignore) {
1041+
}
1042+
return jsonObject.toString();
1043+
}
1044+
9851045
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
9861046
private static void clipData2String(ClipData clipData, StringBuilder sb) {
9871047
ClipData.Item item = clipData.getItemAt(0);

0 commit comments

Comments
 (0)