FJSON.java 2.0 KB
package login;

import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import com.alibaba.fastjson.JSONObject;

public class FJSON {
	// 讲一个json字符串转换成一个对象
	public static void JsonToObject(Object obj, String str) {
		Field[] field = obj.getClass().getDeclaredFields();
		JSONObject jsonObj = JSONObject.parseObject(str);
		for (int i = 0; i < field.length; i++) {
			String name = field[i].getName();
			String setter = name.substring(0, 1).toUpperCase() + name.substring(1);
			String type = field[i].getGenericType().toString(); // 获取属性类型
			try {
				Method[] ms = obj.getClass().getMethods(); // 获取setter函数
				for (int j = 0; j < ms.length; j++) {
					// 找到了方法
					if (ms[j].getName().substring(0, 3).equals("set") && ms[j].getName().substring(3).equals(setter)) {
						Method m = ms[j];
						// System.out.println("type:"+type);
						if (type.equals("class java.lang.String")) {
							String value = jsonObj.getString(name);
							if (value != null && value.length() > 0)
								m.invoke(obj, value);
							else {
								value = null;
								m.invoke(obj, value);
							}
						} else if (type.equals("class java.lang.Integer") || type.equals("int")) {
							String value = jsonObj.getString(name);
							if (value != null && value.length() > 0)
								m.invoke(obj, Integer.parseInt(value));
						} else if (type.equals("class java.lang.Long") || type.equals("long")) {
							String value = jsonObj.getString(name);
							System.out.println(value);
							if (value != null && value.length() > 0)
								m.invoke(obj, Long.parseLong(value));
						} else if (type.equals("class java.lang.Boolean")) {

						}
						break;
					}
				}
			} catch (SecurityException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (InvocationTargetException e) {
				e.printStackTrace();
			}
		}
	}
}