JSONUtil

package com.test.common.util;


import net.sf.json.JSONObject;
import flexjson.JSONDeserializer;
import flexjson.JSONSerializer;

public class JsonUtil {
    
    /**
     * selector 说明:
     *  1. 选择器有一个或者多个选择子构成,多个选择子使用逗号","隔开;
     *     2. 无论是否使用选择子,全部简单属性(除了数组、List、Map、Set等容器类型外的所有类型)始终被选择,除非这些属性被明确排除;
、     *  3. 选择子要么是属性名称,要么是由"."分隔的级联属性,要么是属性的通配表达式(含有*);
     *  4. 选择子前的“-”表示排除该选择子匹配的属性;
     */
    public static String toJson(Object obj,String selectors){
        String[] ic = null;

        if(selectors != null && !selectors.equals("")){
            ic = selectors.split(",");
        }        
        return toJson(obj,ic);
    }
    
    public static String toJson(Object obj,String[] selectors){
        
        JSONSerializer ser = new JSONSerializer();
        
        if(selectors == null || selectors.length == 0){
            return ser.deepSerialize(obj);
        }
        
        for(int i=0; i< selectors.length; i++){
            String sel  = selectors[i];
            if(sel.startsWith("-")){
                ser.exclude(sel.substring(1));
            }else{
                ser.include(sel);
            }
        }
        
        return ser.deepSerialize(obj);
    }
    /**
     * json转换对象
     * @param js
     * @param classz
     * @return
     */
    @SuppressWarnings("rawtypes")
    public static Object jsonToBean(String js,Class classz){
        JSONObject jsonObject = JSONObject.fromObject(js);
        Object obj=JSONObject.toBean(jsonObject, classz);
        return obj;
    }
    /**
     * 对象转换json字符串
     * @param obj
     * @return
     */
    public static String beanToJson(Object obj){
        
        JSONObject json=JSONObject.fromObject(obj);
        
        return json.toString();
        
    }
    
    //将JSON数据转换为JAVA对象(不能传入数组类型)
    public static <T> T fromJson(String json,Class<T> clazz){
        JSONDeserializer<T> dser = new flexjson.JSONDeserializer<T>().use(null,clazz);
        return dser.deserialize(json);
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值