这边借助于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