一、前言
通过flexjson包flexjson.JSONDeserializer/JSONSerializer定义JsonUtil工具类,实现对JSON字符串转换对象及数组、对象转为JSON字符串、json字符串转Map映射集等。
二、代码示例
import java.util.HashMap;@b@import java.util.List;@b@import java.util.Map;@b@@b@import flexjson.JSONDeserializer;@b@import flexjson.JSONSerializer;@b@@b@public class JsonUtil {@b@ /* @b@ * selector 说明:@b@ * 1. 选择器有一个或者多个选择子构成,多个选择子使用逗号","隔开;@b@ * 2. 无论是否使用选择子,全部简单属性(除了数组、List、Map、Set等容器类型外的所有类型)始终被选择,除非这些属性被明确排除;@b@、 * 3. 选择子要么是属性名称,要么是由"."分隔的级联属性,要么是属性的通配表达式(含有*);@b@ * 4. 选择子前的“-”表示排除该选择子匹配的属性;@b@ */@b@ public static String toJson(Object obj,String selectors){@b@ String[] ic = null;@b@// JSONSerializer ser = new JSONSerializer();@b@@b@ if(selectors != null && !selectors.equals("")){@b@ ic = selectors.split(",");@b@ }@b@ @b@ return toJson(obj,ic);@b@ @b@ //Gson gson = new Gson();@b@ //return gson.toJson(obj);@b@ }@b@ @b@ public static String toJson(Object obj,String[] selectors){@b@// String[] ic = null;@b@ JSONSerializer ser = new JSONSerializer();@b@ @b@ if(selectors == null || selectors.length == 0){@b@ return ser.deepSerialize(obj);@b@ }@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@ @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@}