tinguo002

 

JAVA反射机制,把JavaBean属性转成字符串

package com.jetsum.util;

import java.io.StringReader;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import antlr.RecognitionException;
import antlr.TokenStreamException;

import com.sdicons.json.mapper.JSONMapper;
import com.sdicons.json.mapper.MapperException;
import com.sdicons.json.model.JSONArray;
import com.sdicons.json.model.JSONValue;
import com.sdicons.json.parser.JSONParser;

public class JsonUtil {

    
/**
     * JAVA对象转换成JSON字符串
     * 
@param obj
     * 
@return
     * 
@throws MapperException
     
*/
    
    
public static String objectToJsonStr(Object obj) throws MapperException{
        JSONValue jsonValue 
= JSONMapper.toJSON(obj);  
        String jsonStr 
= jsonValue.render(false);
        
return jsonStr;
    }

    
    
/**
     * 重载objectToJsonStr方法
     * 
@param obj 需要转换的JAVA对象
     * 
@param format 是否格式化
     * 
@return
     * 
@throws MapperException
     
*/

    
public static String objectToJsonStr(Object obj,boolean format) throws MapperException{
        JSONValue jsonValue 
= JSONMapper.toJSON(obj);  
        String jsonStr 
= jsonValue.render(format);
        
return jsonStr;
    }
    
    
    
/**
     * JSON字符串转换成JAVA对象
     * 
@param jsonStr
     * 
@param cla
     * 
@return
     * 
@throws MapperException
     * 
@throws TokenStreamException
     * 
@throws RecognitionException
     
*/

    @SuppressWarnings(
"rawtypes""unchecked" })
    
public static Object jsonStrToObject(String jsonStr,Class<?> cla) throws MapperException, TokenStreamException, RecognitionException{
        Object obj 
= null;
        
try{
            JSONParser parser 
= new JSONParser(new StringReader(jsonStr));    
            JSONValue jsonValue 
= parser.nextValue();              
            
if(jsonValue instanceof com.sdicons.json.model.JSONArray){
                List list 
= new ArrayList();
                JSONArray jsonArray 
= (JSONArray) jsonValue;
                
for(int i=0;i<jsonArray.size();i++){
                    JSONValue jsonObj 
= jsonArray.get(i);
                    Object javaObj 
= JSONMapper.toJava(jsonObj,cla); 
                    list.add(javaObj);
                }

                obj 
= list;
            }
else if(jsonValue instanceof com.sdicons.json.model.JSONObject){
                obj 
= JSONMapper.toJava(jsonValue,cla); 
            }
else{
                obj 
= jsonValue;
            }

        }
catch(Exception e){
            e.printStackTrace();
        }

        
return obj; 
    }

    
    
/**
     * 将JAVA对象转换成JSON字符串
     * 
@param obj
     * 
@return
     * 
@throws IllegalArgumentException
     * 
@throws IllegalAccessException
     
*/

    @SuppressWarnings(
"rawtypes")
    
public static String simpleObjectToJsonStr(Object obj,List<Class> claList) throws IllegalArgumentException, IllegalAccessException{
        
if(obj==null){
            
return "null";
        }

        String jsonStr 
= "{";
        Class
<?> cla = obj.getClass();
        Field fields[] 
= cla.getDeclaredFields();
        
for (Field field : fields) {
            field.setAccessible(
true);
            
if(field.getType() == long.class){
                jsonStr 
+= "\""+field.getName()+"\":"+field.getLong(obj)+",";
            }
else if(field.getType() == double.class){
                jsonStr 
+= "\""+field.getName()+"\":"+field.getDouble(obj)+",";
            }
else if(field.getType() == float.class){
                jsonStr 
+= "\""+field.getName()+"\":"+field.getFloat(obj)+",";
            }
else if(field.getType() == int.class){
                jsonStr 
+= "\""+field.getName()+"\":"+field.getInt(obj)+",";
            }
else if(field.getType() == boolean.class){
                jsonStr 
+= "\""+field.getName()+"\":"+field.getBoolean(obj)+",";
            }
else if(field.getType() == Integer.class||field.getType() == Boolean.class
                    
||field.getType() == Double.class||field.getType() == Float.class                    
                    
||field.getType() == Long.class){                
                jsonStr 
+= "\""+field.getName()+"\":"+field.get(obj)+",";
            }
else if(field.getType() == String.class){
                jsonStr 
+= "\""+field.getName()+"\":\""+field.get(obj)+"\",";
            }
else if(field.getType() == List.class){
                String value 
= simpleListToJsonStr((List<?>)field.get(obj),claList);
                jsonStr 
+= "\""+field.getName()+"\":"+value+",";                
            }
else{        
                
if(claList!=null&&claList.size()!=0&&claList.contains(field.getType())){
                    String value 
= simpleObjectToJsonStr(field.get(obj),claList);
                    jsonStr 
+= "\""+field.getName()+"\":"+value+",";                    
                }
else{
                    jsonStr 
+= "\""+field.getName()+"\":null,";
                }

            }

        }

        jsonStr 
= jsonStr.substring(0,jsonStr.length()-1);
        jsonStr 
+= "}";
            
return jsonStr;        
    }

    
    
/**
     * 将JAVA的LIST转换成JSON字符串
     * 
@param list
     * 
@return
     * 
@throws IllegalArgumentException
     * 
@throws IllegalAccessException
     
*/

    @SuppressWarnings(
"rawtypes")
    
public static String simpleListToJsonStr(List<?> list,List<Class> claList) throws IllegalArgumentException, IllegalAccessException{
        
if(list==null||list.size()==0){
            
return "[]";
        }

        String jsonStr 
= "[";
        
for (Object object : list) {
            jsonStr 
+= simpleObjectToJsonStr(object,claList)+",";
        }

        jsonStr 
= jsonStr.substring(0,jsonStr.length()-1);
        jsonStr 
+= "]";        
        
return jsonStr;
    }
    
    
    
/**
     * 将JAVA的MAP转换成JSON字符串,
     * 只转换第一层数据
     * 
@param map
     * 
@return
     
*/

    
public static String simpleMapToJsonStr(Map<?,?> map){
        
if(map==null||map.isEmpty()){
            
return "null";
        }

        String jsonStr 
= "{";
        Set
<?> keySet = map.keySet();
        
for (Object key : keySet) {
            jsonStr 
+= "\""+key+"\":\""+map.get(key)+"\",";        
        }

        jsonStr 
= jsonStr.substring(0,jsonStr.length()-1);
        jsonStr 
+= "}";
        
return jsonStr;
    }

}


文章详细参考:http://blog.csdn.net/sjiang2142/article/details/6770672

欢迎大家访问我的个人网站 萌萌的IT人

posted on 2014-07-22 15:14 一堣而安 阅读(3914) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜