javascript
java 反射 json_java 反射机制构建JSON字符串
java 反射機(jī)制構(gòu)建JSON字符串。接著上一篇文章、今天繼續(xù)學(xué)習(xí)利用java 反射機(jī)制構(gòu)建JSON字符串。
JSON的格式跟使用的方式方法就不講了、這個(gè)百度一下就有……好了今天心情很糟糕、直接上代碼吧!
[java]view plaincopyprint?
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import com.test.hzw.bean.test_user;
import com.test.hzw.dao.impl.DaoImpl;
/**
* Json轉(zhuǎn)換測(cè)試類
* @author 胡漢三
*
*/
@SuppressWarnings({“unchecked”,”unused”})
public class Reflect004 {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
DaoImpl dao = new DaoImpl();
test_user u = new test_user();
String sqlPage = “SELECT * FROM test_user WHERE id <= “;
sqlPage += ” (SELECT id FROM test_user ORDER BY id LIMIT “+(2-1)*20+”, 1) “;
sqlPage += ” ORDER BY id LIMIT 20 ” ;
/*
* 從數(shù)據(jù)庫查詢并獲得集合
*
* PS: 該方法是上一篇文章的內(nèi)容
*/
List listT = (List)dao.findList(u, sqlPage, new ArrayList());
String s = ToJsonByList(listT);
System.out.println(s);
System.out.println(ToJsonByAll(listT.get(0)).toString());
}
/**
* 根據(jù)List集合生成Json數(shù)組格式字符串(只支持bean方式)
* @param
* @param list 集合對(duì)象
* @return
*/
public static String ToJsonByList(List list){
StringBuffer b = new StringBuffer(“[");
if(list!=null&&list.size()>0){
for (int i = 0; i < list.size(); i++){
Object o = list.get(i);
try {
//調(diào)用ToJsonByBean方法
StringBuffer s = ToJsonByBean(o);
if(s!=null&&!s.equals("")){
b.append(s).append(",");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
b.append("]“);
return b.replace(b.lastIndexOf(“,”),b.lastIndexOf(“,”) + 1 ,”").toString();
}
/**
* 根據(jù)javaBean生成Json對(duì)象格式字符串
* @param object 任意javaBean類型對(duì)象
* @return 拼接好的StringBuffer對(duì)象
*/
public static StringBuffer ToJsonByBean(Object object) throws Exception{
Class clazz = object.getClass(); //獲得Class對(duì)象
Field[] fields = clazz.getDeclaredFields(); //獲得Class對(duì)象的字段數(shù)組
StringBuffer sb = new StringBuffer(“{“);
/*
* 循環(huán)字段數(shù)組
*/
for (Field field : fields) {
String fieldName = field.getName(); //獲得字段名稱
//獲得字段對(duì)應(yīng)的get方法對(duì)象
Method method = clazz.getMethod(“get” + change(fieldName), null);
//調(diào)用get方法獲得字段的值
Object property = method.invoke(object, null);
/*
* 生成json字符串?dāng)?shù)據(jù)
*/
if(property == null){
sb.append(“\”"+fieldName+”\”:\”\”,”);
}else{
if (field.getType().getName().equals(“java.lang.Boolean”))
sb.append(“\”"+fieldName+”\”:”+Boolean.valueOf(property.toString())+”,”);
else
sb.append(“\”"+fieldName+”\”:\”"+property+”\”,”);
}
}
sb.append(“}”);
return sb.replace(sb.lastIndexOf(“,”),sb.lastIndexOf(“,”) + 1 ,”");
}
/**
* @param src 源字符串
* @return 字符串,將src的第一個(gè)字母轉(zhuǎn)換為大寫,src為空時(shí)返回null
*/
public static String change(String src) {
if (src != null) {
StringBuffer sb = new StringBuffer(src);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
return sb.toString();
} else {
return null;
}
}
/**
* 生成Json數(shù)組格式字符串
* @param object 任意類型對(duì)象
* @return 拼接好的StringBuffer對(duì)象
*/
public static StringBuffer ToJsonByAll(Object object) throws Exception{
Class clazz = object.getClass();
Field[] fields = clazz.getDeclaredFields();
StringBuffer sb = new StringBuffer(“{[");
for (Field field : fields) {
String fieldName = field.getName();
Method method = clazz.getMethod("get" + change(fieldName), null);
Object property = method.invoke(object, null);
if(property == null){
sb.append("\"\",");
}else{
sb.append("\"" + property + "\",");
}
}
sb.append("]}”);
return sb.replace(sb.lastIndexOf(“,”),sb.lastIndexOf(“,”) + 1 ,”");
}
}
有的時(shí)候、很多時(shí)候我總是控制不住自己的情緒。
o(︶︿︶)o 唉!
總結(jié)
以上是生活随笔為你收集整理的java 反射 json_java 反射机制构建JSON字符串的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【LeetCode笔记】33. 搜索螺旋
- 下一篇: python 修饰器 参数_具有参数的P