public class JsonUtil {
// 把JsonArray的字符串转换成List<Map<String, Object>>
public static List<Map<String, Object>> parseJsonArrayStrToListForMaps(
String jsonArrayStr) {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
if (jsonArrayStr != null) {
JSONArray jsonArray = new JSONArray(jsonArrayStr);
Map<String, Object> map = null;
for (int j = 0; j < jsonArray.length(); j++) {
JSONObject jsonObject = jsonArray.getJSONObject(j);
map = parseJsonObjectStrToMap(jsonObject.toString());
if (map != null) {
list.add(map);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (list.size() == 0) {
return null;
}
return list;
}
// 把JsonObject的字符串转换成Map<String, Object>
public static Map<String, Object> parseJsonObjectStrToMap(
String jsonObjectStr) {
Map<String, Object> map = new HashMap<String, Object>();
try {
if (jsonObjectStr != null) {
JSONObject jsonObject = new JSONObject(jsonObjectStr);
for (int j = 0; j < jsonObject.length(); j++) {
Iterator<String> iterator = jsonObject.keys();
while (iterator.hasNext()) {
String key = iterator.next();
Object value = jsonObject.get(key);
map.put(key, value);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (map.size() == 0) {
return null;
}
return map;
}
// 把JsonObject的字符串转换成java 对象
public static <T> T parseJsonObjectStrToEntity(String jsonObjectStr,
Class<T> clazz) {
Map<String, Object> map = parseJsonObjectStrToMap(jsonObjectStr);
try {
T entity = clazz.newInstance();
Set<String> set = map.keySet();
if (CollectionUtils.isNotEmpty(set)) {
for (String key : set) {
ReflectUtil.setValue(entity, key, map.get(key));
}
return entity;
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
// 把JsonArray的字符串转换成List<entitys>
public static <T> List<T> parseJsonArrayStrToEntitys(String jsonArrayStr,
Class<T> clazz) throws Exception{
List<Map<String, Object>> list = parseJsonArrayStrToListForMaps(jsonArrayStr);
// 返回数据集合
List<T> entitys = new ArrayList<T>();
// 得到对象所有字段
if (CollectionUtils.isNotEmpty(list)) {
for (Map<String, Object> map : list) {
T entity = clazz.newInstance();
Set<String> set = map.keySet();
if (CollectionUtils.isNotEmpty(set)) {
for (String key : set) {
ReflectUtil.setValue(entity, key, map.get(key));
}
entitys.add(entity);
}
}
return entitys;
}
return null;
}
}
///
public class ReflectUtil {
/**
* 获取实体类一个成员变量的值
*/
public static Object getValue(Object entity, String fieldName) {
Object value = null;
try {
Class<?> clazz = entity.getClass();
String methodName = "get" + StrUtil.getUpperCharAt(fieldName, 0);
Method method = clazz.getMethod(methodName);
value = method.invoke(entity);
} catch (Exception e) {
e.printStackTrace();
}
return value;
}
/**
* 设置实体类一个成员变量的值
*/
public static void setValue(Object entity, String fieldName, Object value) {
try {
Class<?> clazz = entity.getClass();
Field field = clazz.getDeclaredField(fieldName);
Class<?> type = field.getType();
String methodName = "set" + StrUtil.getUpperCharAt(fieldName, 0);//有参函数
Method method = clazz.getMethod(methodName, type);
method.invoke(entity, value);
} catch (Exception e) {
e.printStackTrace();
}
}
}
/
public class StrUtil {
/**
* 把字符串的指定字母大写
*/
public static String getUpperCharAt(String str, int index) {
String result = null;
int count = str.length();
if (count > index) {
String start = str.substring(0, index);
String at = (str.charAt(index) + "").toUpperCase();
String end = str.substring(index + 1);
result = start + at + end;
} else {
Log.d("", "数组越界");
}
return result;
}
/**
* 把字符串中的特殊字符转义符转换回特殊字符
*/
public static String specialCharParse(String str) {
if (StringUtils.isNotBlank(str)) {
str = str.replace("#1#", "%");
str = str.replace("#2#", "&");
// str = str.replace("#3#", "$");
}
return str;
}
}