首页

java实现对象和Json格式的相互转换(依赖第三方flexjson)

标签:java,myflexjson.jar,JSON,对象,数据格式,工具类,utils,字符串互转     发布时间:2016-08-07   

这边借助于flexjson的对象的json序列化(flexjson.JSONSerializer)和反序列化(flexjson.JSONDeserializer)转换(myflexjson.jar下载),该工具类主要实现了对象转换json字符串、json字符串转换java对象以及对象集和JsonArray的互转

import java.util.HashMap;@b@import java.util.List;@b@import java.util.Map;@b@import flexjson.JSONDeserializer;@b@import flexjson.JSONSerializer;@b@@b@public class JsonUtil {@b@@b@   /** @b@	     * selector 说明:@b@	     *  1. 选择器有一个或者多个选择子构成,多个选择子使用逗号","隔开;@b@	     *  2. 无论是否使用选择子,全部简单属性(除了数组、List、Map、Set等容器类型外的所有类型)始终被选择,除非这些属性被明确排除;@b@	     *  3. 选择子要么是属性名称,要么是由"."分隔的级联属性,要么是属性的通配表达式(含有*);@b@	     *  4. 选择子前的“-”表示排除该选择子匹配的属性;@b@	     */@b@	     @b@    public static String toJson(Object obj,String selectors){@b@        String[] ic = null;@b@        if(selectors != null && !selectors.equals("")){@b@            ic = selectors.split(",");@b@        }@b@        return toJson(obj,ic);@b@    }@b@    @b@    public static String toJson(Object obj,String[] selectors){@b@        JSONSerializer ser = new JSONSerializer();@b@        if(selectors == null || selectors.length == 0){@b@            return ser.deepSerialize(obj);@b@        }@b@        for(int i=0; i< selectors.length; i++){@b@            String sel  = selectors[i];@b@            if(sel.startsWith("-")){@b@                ser.exclude(sel.substring(1));@b@            }else{@b@                ser.include(sel);@b@            }@b@        }@b@        return ser.deepSerialize(obj);@b@    }@b@    @b@    //将JSON数据转换为JAVA对象(不能传入数组类型)@b@    public static <T> T fromJson(String json,Class<T> clazz){@b@        JSONDeserializer<T> dser = new flexjson.JSONDeserializer<T>().use(null,clazz);@b@        return dser.deserialize(json);@b@    }@b@    @b@    public static <T> List<T>  fromJsonList(String json,Class<T> clazz){@b@        JSONDeserializer<List<T>> dser = new flexjson.JSONDeserializer<List<T>>().list(clazz);@b@        return dser.deserialize(json);@b@    }@b@    @b@    //将JSON数组转换为JAVA-Array@b@    @SuppressWarnings("unchecked")@b@    public static <T> T[] fromJsonArray(String json, Class<T> clazz){@b@        JSONDeserializer<T> dser = new flexjson.JSONDeserializer<T>().list(clazz);@b@        Object result = dser.deserialize(json);@b@        if(result instanceof List){@b@            return (T[]) ((List)result).toArray();@b@        }@b@        return null;@b@    }@b@    @b@    //将JSON对象转换为JAVA-Map@b@    @SuppressWarnings("unchecked")@b@    public static Map fromJson(String json){@b@        JSONDeserializer<Map> dser = new flexjson.JSONDeserializer<Map>().use(null, HashMap.class);@b@        return dser.deserialize(json);@b@    }@b@    @b@    public static void main(String[] args) {@b@		@b@		JsonObj j1 = new JsonObj();  @b@		j1.setId("1111");@b@		j1.setName("n111");@b@		@b@		JsonObj j2 = new JsonObj();  @b@		j1.setId("2222");@b@		j1.setName("n2222");@b@		@b@		//String vv=JsonUtil.toJson(j1, "name");@b@		String vv=JsonUtil.toJson(j1, "-name");@b@		System.out.println(vv);@b@		@b@		String ss="{\"class\":\"com.xwood.publisher.test.JsonObj\",\"id\":\"2222\",\"name\":\"n2222\"}";@b@@b@		JsonObj j3=(JsonObj)JsonUtil.fromJson(ss,JsonObj.class);@b@		System.out.println(j3.getName());@b@		@b@		@b@	}@b@    @b@}

控制台输入结果

// {"class":"com.xwood.publisher.test.JsonObj","id":"2222","name":"n2222"}@b@{"class":"com.xwood.publisher.test.JsonObj","id":"2222"}@b@n2222
<<热门下载>>