package org.yeshi.utils.annotation;
|
|
import com.google.gson.Gson;
|
import net.sf.json.JSONObject;
|
import org.yeshi.utils.StringUtil;
|
|
import java.io.UnsupportedEncodingException;
|
import java.lang.annotation.Annotation;
|
import java.lang.reflect.Field;
|
import java.util.Properties;
|
|
public class MapUtil {
|
|
public static Object parseMap(Class<?> clazz, Properties ps) {
|
System.out.println(clazz.getName());
|
Object target = null;
|
try {
|
Class clz = Class.forName(clazz.getName());
|
target = clz.newInstance();
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
Field[] fields = clazz.getDeclaredFields();
|
for (Field fd : fields) {
|
fd.setAccessible(true);
|
Annotation[] as = fd.getAnnotations();
|
for (Annotation a : as) {
|
if (a instanceof Map) {
|
Map c = (Map) a;
|
try {
|
fd.set(target, new String(ps.getProperty(c.value()).getBytes("ISO-8859-1"), "UTF-8"));
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
return target;
|
}
|
|
|
public static Object parseMapByJson(Class<?> clazz, Properties ps, String encoding) {
|
if (StringUtil.isNullOrEmpty(encoding)) {
|
encoding = "ISO-8859-1";
|
}
|
JSONObject json = new JSONObject();
|
Field[] fields = clazz.getDeclaredFields();
|
for (Field fd : fields) {
|
fd.setAccessible(true);
|
Annotation[] as = fd.getAnnotations();
|
for (Annotation a : as) {
|
if (a instanceof Map) {
|
Map c = (Map) a;
|
try {
|
json.put(fd.getName(), new String(ps.getProperty(c.value()).getBytes(encoding), "UTF-8"));
|
} catch (UnsupportedEncodingException e) {
|
e.printStackTrace();
|
}
|
|
}
|
}
|
}
|
return new Gson().fromJson(json.toString(), clazz);
|
}
|
|
}
|