首页

通过flexjson定义JsonUtil解析处理工具类实现对象和JSON相互转换、json字符串转对象数组或Map等处理代码示例

标签:flexjson,JsonUtil,JSON工具类,对象转json,JSON转对象     发布时间:2018-10-31   

一、前言

通过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@}