由于要处理接口中传过来的一个json字符串,并且其中的key符合一个对象,只是类型不全都是string类型,因此写了该工具类。
其中写的不好的地方希望大家指出来并且告诉我,非常感谢!我还是初学者,有很多考虑不全并且有更好的方法未能想到可要记得告诉我下,一起进步
import java.lang.reflect.Field;
import java.text.ParseException;import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JSONObject;
/**
* <b>初始化对象属性</b> <br>
* 对一个对象初始化属性,属性值以一个json字符串形式传入 <br>
* 例如:一个obj对象有Long id,String name,int age 这三个属性 <br>
* 赋初始值:id:12; name:xiaoming ; sex不赋值,则:inputJSON = "id:12,name:xiaoming";
*
* <br>
* <br>
* 特别说明:date型时间格式是以:yyyyMMddHHmmss,并且在给属性赋值中不要有
*
* @author hecy
*
*/
public class InitializationClassByJSON {
/**
* <b>初始化对象属性</b> <br>
* 对一个对象初始化属性,属性值以一个json对象传入 <br>
* <br>
* 特别说明:date型时间格式是以:yyyyMMddHHmmss,并且在给属性赋值中不要有
* @param object
* @param inputJSON
* @return
*/
public static Object getObjectByJSONObject(Object object, JSONObject inputJSON) {
try {
// 获取实体类的所有属性,返回Field数组
Field[] f = object.getClass().getDeclaredFields();
for (int i = 0; i < f.length; i++) {
// 获取属性的名字
String name = f[i].getName();
// 获取属性类型
String type = f[i].getGenericType().toString();
// 关键,可访问私有变量
f[i].setAccessible(true);
// 给属性设置
if(inputJSON.get(name) != null && !"".equals(inputJSON.get(name)) ){
if (type.equals("class java.lang.String")) {
f[i].set(object,(String)inputJSON.get(name));continue;
}
if (type.equals("class java.lang.Integer")) {