java反射實(shí)現(xiàn)javabean轉(zhuǎn)json實(shí)例代碼
ObjectToJson.java
package com.ObjectToJson;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Iterator;
public class ObjectToJson {
public static String ObjListToJson(ArrayList<?> list){
StringBuilder build=new StringBuilder();
//迭代器
Iterator<?> iterator=list.iterator();
build.append("[");
String separate="";
while(iterator.hasNext()){
build.append(separate);
//object轉(zhuǎn)json字符串
String str=ObjToJson(iterator.next());
build.append(str);
separate=",";
}
build.append("]");
return build.toString();
}
@SuppressWarnings("unchecked")
public static String ObjToJson(Object obj){
StringBuilder build=new StringBuilder();
build.append("{");
@SuppressWarnings("rawtypes")
Class cla=null;
try {
//反射加載類
cla=Class.forName(obj.getClass().getName());
} catch (ClassNotFoundException e) {
System.out.println(obj.getClass().toString().concat(" 未找到這個(gè)類"));
e.printStackTrace();
return null;
}
StringBuffer methodname=new StringBuffer();
//獲取java類的變量
Field[] fields=cla.getDeclaredFields();
String separate="";
for(Field temp:fields){
build.append(separate);
build.append("\"");
build.append(temp.getName());
build.append("\":");
methodname.append("get");
methodname.append(temp.getName().substring(0,1).toUpperCase());
methodname.append(temp.getName().substring(1));
build.append("\"");
Method method=null;
try {
//獲取java的get方法
method=cla.getMethod(methodname.toString());
} catch (NoSuchMethodException | SecurityException e) {
methodname.setLength(0);
e.printStackTrace();
}
try {
//執(zhí)行g(shù)et方法,獲取變量參數(shù)的直。
build.append(method.invoke(obj));
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
build.append("\"");
methodname.setLength(0);
separate=",";
}
build.append("}");
return build.toString();
}
}
Test.java
package com.test;
import java.util.ArrayList;
import com.ObjectToJson.ObjectToJson;
public class Test {
public static void main(String[] args){
//數(shù)據(jù)構(gòu)建
ArrayList<User> list=getlist();
//數(shù)據(jù)轉(zhuǎn)換
String listjson=ObjectToJson.ObjListToJson((ArrayList<?>)list);
System.out.println("{\"data\":"+listjson+"}");
}
public static ArrayList<User> getlist(){
User user00=new User();
user00.setUserage("27");
user00.setUsername("smart");
user00.setUsersex("man");
User user01=new User();
user01.setUserage("27");
user01.setUsername("smart00");
user01.setUsersex("man");
ArrayList<User> list=new ArrayList<User>();
list.add(user00);
list.add(user01);
return list;
}
}
User.java
package com.test;
public class User {
private String username;
private String usersex;
private String userage;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUsersex() {
return usersex;
}
public void setUsersex(String usersex) {
this.usersex = usersex;
}
public String getUserage() {
return userage;
}
public void setUserage(String userage) {
this.userage = userage;
}
}
測(cè)試結(jié)果
{"data":[{"username":"smart","usersex":"man","userage":"27"},{"username":"smart00","usersex":"man","userage":"27"}]}
相關(guān)文章
SSH框架網(wǎng)上商城項(xiàng)目第19戰(zhàn)之訂單信息級(jí)聯(lián)入庫以及頁面緩存問題
這篇文章主要介紹了SSH框架網(wǎng)上商城項(xiàng)目第19戰(zhàn)之訂單信息級(jí)聯(lián)入庫以及頁面緩存問題,感興趣的小伙伴們可以參考一下2016-06-06
關(guān)于socket發(fā)送數(shù)據(jù)需要注意的問題
這篇文章主要介紹了關(guān)于socket發(fā)送數(shù)據(jù)需要注意的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
詳解Java分布式系統(tǒng)中session一致性問題
這篇文章主要介紹了Java分布式系統(tǒng)中session一致性問題,對(duì)分布式系統(tǒng)感興趣的同學(xué),要仔細(xì)看一下2021-04-04
Idea連接GitLab的過程以及創(chuàng)建在gitlab中創(chuàng)建用戶和群組方式
本文介紹了如何在IDEA中連接GitLab,首先需安裝GitLab插件并配置SSH免密登錄,接著,創(chuàng)建GitLab個(gè)人令牌并在Git中配置,文章還提到了如何在GitLab中創(chuàng)建用戶、群組及設(shè)置權(quán)限,如Owner、Maintainer、Developer等,并強(qiáng)調(diào)了群組名和人員名稱的命名規(guī)范2024-11-11
用SpringBoot框架來接收multipart/form-data文件方式
這篇文章主要介紹了用SpringBoot框架來接收multipart/form-data文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Java?Zip壓縮之簡(jiǎn)化文件和文件夾的壓縮操作
這篇文章主要給大家介紹了關(guān)于Java?Zip壓縮之簡(jiǎn)化文件和文件夾的壓縮操作,Zip壓縮是一種常見的文件壓縮格式,它將多個(gè)文件和文件夾打包成一個(gè)以.zip為后綴的壓縮包,需要的朋友可以參考下2023-10-10
使用eclipse打包Maven項(xiàng)目的實(shí)現(xiàn)步驟
本文主要介紹了使用eclipse打包Maven項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03

