java中Json,Map,实体之间的转换

/**  
 * @Title: JsonUtil.java
 * @Package rongtai.scanpay.tcp.util
 * @Description: TODO
 * @author caowei
 * @date 2015年11月20日
 */
package shaoxi.tcpinf.util;


import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;


import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;


/**
 * ClassName: JsonUtil 
 * @Description: TODO JSON转换工具类
 * @author caowei
 * @date 2015年11月20日
 */
public class JsonUtil {

/**
* 对象转换成json字符串 
* @Description: TODO
* @param @param obj
* @param @return   
* @return String  
* @throws
* @author caowei
* @date 2015年11月20日
*/
public String toJson(Object obj) {
String result = "";
Gson gson = new GsonBuilder().serializeNulls().create();
try{
result = gson.toJson(obj);
}catch(Exception e){
e.printStackTrace();
}

return result;
}

/**
* json字符串转成对象
* @Description: TODO
* @param @param str
* @param @param type
* @param @return   
* @return T  
* @throws
* @author caowei
* @date 2015年11月20日
*/
public <T> T fromJson(String str, Type type) {
Gson gson = new Gson();  
try{
T t = gson.fromJson(str, type); 
return t;
}catch(Exception e){
e.printStackTrace();
}
return null; 
}

/**
* json字符串转成对象 
* @Description: TODO
* @param @param str
* @param @param type
* @param @return   
* @return T  
* @throws
* @author caowei
* @date 2015年11月20日
*/
public <T> T fromJson(String str, Class<T> type) {  
Gson gson = new Gson();
try{
T t = gson.fromJson(str, type); 
return t;
}catch(Exception e){
e.printStackTrace();
}
return null;  
}

/**
* @创建人: ZYC
* @Method描述: 字符串返回成Map
* @创建时间: 2015年11月27日上午9:50:01
* @param str Json字符串
* @return Map
*/
public Map<String, String> toMap(String str) {
Gson gson = new Gson();
Map<String, String> gsonMap = gson.fromJson(str, new TypeToken<Map<String, String>>() {
}.getType());
return gsonMap;
}

/**
* Json字符串转JsonArray对象
* @Description: TODO
* @param @param strJson
* @param @return   
* @return JsonObject  
* @throws
* @author caowei
* @date 2015年12月28日
*/
public JsonArray String2JsonArray(String strJson) {
JsonParser jsonParser=new JsonParser();
return jsonParser.parse(strJson).getAsJsonArray();
}

/**
* Json字符串转JsonObject对象
* @Description: TODO
* @param @param strJson
* @param @return   
* @return JsonObject  
* @throws
* @author caowei
* @date 2015年12月28日
*/
public JsonObject String2JsonObject(String strJson){
JsonParser jsonParser=new JsonParser();
strJson = strJson.replace("[", "");
strJson = strJson.replace("]", "");
return jsonParser.parse(strJson).getAsJsonObject();
}

private <T> Map<String,Object> EntToMap(Object model, Class<T> t, Map<String,Object> map){
try{
Field[] fields =  t.getDeclaredFields();
if(fields.length>0 && map==null)
map = new HashMap<String,Object>();
for(Field f:fields){
String name = f.getName();
name = name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写,方便构造get,set方法
Method m = model.getClass().getMethod("get"+name);
           String value = String.valueOf(m.invoke(model)); 
           if(map!=null && value!=null)
            map.put(f.getName(), value);
           else
            map.put(f.getName(), "");
}
if(t.getSuperclass()!=null){
EntToMap(model, t.getSuperclass(), map);
}
}catch(Exception e){
e.printStackTrace();
}
return map;


/**
* 实体类转成Map对象
* @param model
* @return
*/
public <T> Map<String, Object> Entity2Map(Object model){
Map<String, Object> map = null;
try{
map = EntToMap(model,model.getClass(),map);
}catch(Exception e){
e.printStackTrace();
}
return map;
}


private <T> JsonObject EntToObj(Object model, Class<T> t, JsonObject jsonObj){
try{
Field[] fields =  t.getDeclaredFields();
if(fields.length>0 && jsonObj==null)
jsonObj = new JsonObject();
for(Field f:fields){
String name = f.getName();
name = name.substring(0,1).toUpperCase()+name.substring(1); //将属性的首字符大写,方便构造get,set方法
Method m = model.getClass().getMethod("get"+name);
           String value = String.valueOf(m.invoke(model)); 
           if(jsonObj!=null && value!=null)
            jsonObj.addProperty(f.getName(), value);
           else
            jsonObj.addProperty(f.getName(), "");
}
if(t.getSuperclass()!=null){
EntToObj(model, t.getSuperclass(), jsonObj);
}
}catch(Exception e){
e.printStackTrace();
}
return jsonObj;
}

/**
* 实体转为Json对象
* @param model
* @return
*/
public <T> JsonObject Entity2JsonObject(Object model){
JsonObject jsonObject = null;
try{
jsonObject = EntToObj(model, model.getClass(), jsonObject);
}catch(Exception e){
e.printStackTrace();
}
return jsonObject;
}
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

骑着骆驼写程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值