- 通过JSON自动的处理机制需要进行多层VO对象的取得,这样的做法在实际工作中比较麻烦,也不建议使用,所以此时如果是一个单独的VO对象则可以自己编写一个程序类.
- 定义BO与JSON的转换处理
package mao.shu.util;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
public class VoToJSONUtil {
public static String createJSONdate(Object obj)throws Exception{
StringBuffer buf = new StringBuffer("{");
Field[] fields = obj.getClass().getDeclaredFields();
for(int x = 0; x < fields.length; x++){
String fieldTypeName = fields[x].getType().getSimpleName();
if(isBasicData(fieldTypeName) != -1){
String key_value = handle(obj,fields[x]);
buf.append(key_value).append(",");
}
}
buf.delete(buf.length()-1,buf.length()).append("}");
return buf.toString();
}
private static String handle(Object obj,Field field) throws Exception {
String fieldTypeName = field.getType().getSimpleName();
String fieldName = field.getName();
Method method = obj.getClass().getMethod("get"+StringUtil.initCap(fieldName));
Object value = method.invoke(obj);
int typeNumber = isBasicData(fieldTypeName);
if(typeNumber == 1 | typeNumber == 2){
return "\""+fieldName+"\""+":"+value;
}else if (typeNumber == 4){
return "\""+fieldName+"\""+":"+"\""+value+"\"";
}else if (typeNumber == 8){
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String date = sf.format(value);
return "\""+fieldName+"\""+":"+"\""+date+"\"";
}
return "";
}
private static Integer isBasicData(String dataTypeName){
if(dataTypeName .equalsIgnoreCase("double")){
return 1;
}else if(dataTypeName.equals("int")||dataTypeName.equals("Integer")){
return 2;
}else if(dataTypeName.equals("String")){
return 4;
}else if(dataTypeName.equals("Date")){
return 8;
}
return -1;
}
}
package mao.shu.util;
public class StringUtil {
public static String initCap(String str){
return str.substring(0,1).toUpperCase()+str.substring(1);
}
}
package mao.shu.jsondemo;
import mao.shu.util.VoToJSONUtil;
import mao.shu.vo.Dept;
import mao.shu.vo.Emp;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class json_demo4 {
public static void main(String[] args)throws Exception {
int[] empno = new int[]{1,2,3};
String[] ename = new String[]{"SMITH","jack","luse"};
String[] job = new String[]{"maneager","employee","ceo"};
Dept personnel = new Dept();
personnel.setDeptno(1001);
personnel.setDname("aiZhong");
personnel.setLoc("中国");
personnel.setSetupDate(new Date());
List<Emp> allEmp = new ArrayList<>();
for (int i = 0; i < empno.length; i++) {
Emp vo = new Emp();
vo.setEmpno(empno[i]);
vo.setEname(ename[i]);
vo.setJob(job[i]);
vo.setDept(personnel);
allEmp.add(vo);
}
personnel.setAllEmp(allEmp);
String jsondata = VoToJSONUtil.createJSONdate(personnel);
System.out.println(jsondata);
}
}