RequestParamsHelper.java
/*
* Decompiled with CFR 0_132.
*
* Could not load the following classes:
* android.os.Parcelable
* android.os.Parcelable$Creator
* org.json.JSONArray
* org.json.JSONException
* org.json.JSONObject
*/
package org.xutils.http;
import android.os.Parcelable;
import java.lang.reflect.Array;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Map;
import java.util.Set;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.xutils.common.util.LogUtil;
import org.xutils.http.RequestParams;
final class RequestParamsHelper {
private static final ClassLoader BOOT_CL = String.class.getClassLoader();
private RequestParamsHelper() {
}
static void parseKV(Object entity, Class<?> type, ParseKVListener listener) {
if (entity == null || type == null || type == RequestParams.class || type == Object.class) {
return;
}
ClassLoader cl = type.getClassLoader();
if (cl == null || cl == BOOT_CL) {
return;
}
Field[] fields = type.getDeclaredFields();
if (fields != null && fields.length > 0) {
for (Field field : fields) {
if (Modifier.isTransient(field.getModifiers()) || field.getType() == Parcelable.Creator.class) continue;
field.setAccessible(true);
try {
String name = field.getName();
Object value = field.get(entity);
if (value == null) continue;
listener.onParseKV(name, value);
}
catch (IllegalAccessException ex) {
LogUtil.e(ex.getMessage(), ex);
}
}
}
RequestParamsHelper.parseKV(entity, type.getSuperclass(), listener);
}
static Object parseJSONObject(Object value) throws JSONException {
if (value == null) {
return null;
}
Object result = value;
Class<?> cls = value.getClass();
if (cls.isArray()) {
JSONArray array = new JSONArray();
int len = Array.getLength(value);
for (int i = 0; i < len; ++i) {
array.put(RequestParamsHelper.parseJSONObject(Array.get(value, i)));
}
result = array;
} else if (value instanceof Iterable) {
JSONArray array = new JSONArray();
Iterable list = (Iterable)value;
for (Object item : list) {
array.put(RequestParamsHelper.parseJSONObject(item));
}
result = array;
} else if (value instanceof Map) {
JSONObject jo = new JSONObject();
Map map = (Map)value;
for (Map.Entry entry : map.entrySet()) {
Object k = entry.getKey();
Object v = entry.getValue();
if (k == null || v == null) continue;
jo.put(String.valueOf(k), RequestParamsHelper.parseJSONObject(v));
}
result = jo;
} else {
ClassLoader cl = cls.getClassLoader();
if (cl != null && cl != BOOT_CL) {
final JSONObject jo = new JSONObject();
RequestParamsHelper.parseKV(value, cls, new ParseKVListener(){
@Override
public void onParseKV(String name, Object value) {
try {
value = RequestParamsHelper.parseJSONObject(value);
jo.put(name, value);
}
catch (JSONException ex) {
throw new IllegalArgumentException("parse RequestParams to json failed", (Throwable)ex);
}
}
});
result = jo;
}
}
return result;
}
static interface ParseKVListener {
public void onParseKV(String var1, Object var2);
}
}