您的位置:首页 > 编程语言 > Java开发

java 反射 将json对象转换为实体类

2013-05-02 15:19 495 查看
/**
* 将json对象转换为java对象的工具类
*
* @param entityName
*            类的完全限定名 (例:com.sura.entity.SuraStoreroomAssistStockinfo)
* @param object
*            需要转换的json对象(只可以为JSONObject对象不能使JSONArry对象)
* @return 返回对应的java实体
* @throws ClassNotFoundException
* @throws InstantiationException
* @throws IllegalAccessException
* @throws ParseException
*/
public Object getNewObj(String entityName, JSONObject object)
throws ClassNotFoundException, InstantiationException,
IllegalAccessException, ParseException {
Class cl = Class.forName(entityName);
Object obj = cl.newInstance();
Field[] fds = cl.getDeclaredFields();
for (Field fd : fds) {
if (!fd.isAccessible()) {
fd.setAccessible(true);
}
Set<String> setref = object.keySet();
for (String keyref : setref) {
// System.out.println(key);
if (keyref.indexOf(".") != -1) {

String key = keyref.split("\\.")[1];
if (fd.getName().equals(key)) {

String value = object.get(keyref).toString();
if (fd.getType().equals(Long.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Long.parseLong(value));
}
} else if (fd.getType().equals(String.class)) {
fd.set(obj, value);
} else if (fd.getType().equals(Integer.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Integer.parseInt(value));
}
} else if (fd.getType().equals(Double.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Double.parseDouble(value));
}
} else if (fd.getType().equals(Timestamp.class)) {
if (!value.equals("") && !value.equals("null")) {
Date zhxhrq = null;
if (value.indexOf(" ") == -1) {
zhxhrq = this.getsdf().parse(
value + " 00:00:00");
} else {
zhxhrq = this.getsdf().parse(value);
}
fd.set(obj,
Timestamp.valueOf(this.getsdf().format(
zhxhrq)));
}
} else if (fd.getType().equals(Date.class)) {
if (!value.equals("") && !value.equals("null")) {
Date zhxhrq = null;
if (value.indexOf(" ") == -1) {
zhxhrq = this.getsdf().parse(
value + " 00:00:00");
System.out.println(zhxhrq);
} else {
zhxhrq = this.getsdf().parse(value);
System.out.println(zhxhrq);
}
fd.set(obj, zhxhrq);
}
}
}
} else {
String key = keyref.trim();
if (fd.getName().equals(key)) {

String value = object.get(keyref).toString();
if (fd.getType().equals(Long.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Long.parseLong(value));
}
} else if (fd.getType().equals(String.class)) {
fd.set(obj, value);
} else if (fd.getType().equals(Integer.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Integer.parseInt(value));
}
} else if (fd.getType().equals(Double.class)) {
if (!value.equals("") && !value.equals("0")) {
fd.set(obj, Double.parseDouble(value));
}
} else if (fd.getType().equals(Timestamp.class)) {
if (!value.equals("") && !value.equals("null")) {
Date zhxhrq = null;
if (value.indexOf(" ") == -1) {
zhxhrq = this.getsdf().parse(
value + " 00:00:00");
} else {
zhxhrq = this.getsdf().parse(value);
}
fd.set(obj,
Timestamp.valueOf(this.getsdf().format(
zhxhrq)));
}
} else if (fd.getType().equals(Date.class)) {
System.out.println(value);
if (!value.equals("") && !value.equals("null")) {
Date zhxhrq = null;
if (value.indexOf(" ") == -1) {
zhxhrq = this.getsdf().parse(
value + " 00:00:00");

} else {
zhxhrq = this.getsdf().parse(value);
}
fd.set(obj, zhxhrq);
}
}
}
}
}
}
return obj;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: