业精于勤,荒于嬉。

[json]java使用json-lib库的json工具类.

/**
 * 处理json的工具类,负责json数据转换成java对象和java对象转换成json
 * 
 * @since 2012年7月4日22:36:43
 * @author leaves,QQ:1330771552
 */
public class JsonUtil {
	/**
	 * 从一个JSON 对象字符格式中得到一个java对象
	 * 
	 * @param jsonString
	 * @param pojoCalss
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> T jsonToObject(String jsonString, Class<T> pojoCalss) {
		Object pojo;
		JSONObject jsonObject = JSONObject.fromObject(jsonString);
		pojo = JSONObject.toBean(jsonObject, pojoCalss);
		return (T) pojo;
	}

	/**
	 * json字符串转换成集合
	 * 
	 * @param jsonString
	 * @param pojoClass
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass) {
		JSONArray jsonArray = JSONArray.fromObject(jsonString);
		JSONObject jsonObject;
		Object pojoValue;
		List<T> list = new ArrayList<T>();
		for (int i = 0; i < jsonArray.size(); i++) {
			jsonObject = jsonArray.getJSONObject(i);
			pojoValue = JSONObject.toBean(jsonObject, pojoClass);
			list.add((T) pojoValue);
		}
		return list;
	}

	/**
	 * json字符串转换成集合
	 * 
	 * @param jsonString
	 * @param pojoClass
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass, String dataFormat) {
		JsonConfig jsonConfig = configJson(dataFormat);
		JSONArray jsonArray = JSONArray.fromObject(jsonString, jsonConfig);
		JSONObject jsonObject;
		Object pojoValue;
		List<T> list = new ArrayList<T>();
		for (int i = 0; i < jsonArray.size(); i++) {
			jsonObject = jsonArray.getJSONObject(i);
			pojoValue = JSONObject.toBean(jsonObject, pojoClass);
			list.add((T) pojoValue);
		}
		return list;
	}

	/**
	 * 将java对象转换成json字符串
	 * 
	 * @param javaObj
	 * @return
	 */
	public static String objectToJson(Object javaObj) {
		JSONObject json;
		json = JSONObject.fromObject(javaObj);
		return json.toString();
	}

	/**
	 * 将java对象转换成json字符串,并设定日期格式
	 * 
	 * @param javaObj
	 *            要转换的java对象
	 * @param dataFormat
	 *            制定的日期格式
	 * @return
	 */
	public static String objectToJson(Object javaObj, String dataFormat) {
		JSONObject json;
		JsonConfig jsonConfig = configJson(dataFormat);
		json = JSONObject.fromObject(javaObj, jsonConfig);
		return json.toString();

	}

	/**
	 * list变成json
	 * 
	 * @param list
	 * @return
	 */
	public static <T> String listToJson(List<T> list) {
		JSONArray json;
		json = JSONArray.fromObject(list);
		return json.toString();
	}

	/**
	 * list变成json
	 * 
	 * @param list
	 * @return
	 */
	public static <T> String listToJson(List<T> list, String dataFormat) {
		JSONArray json;
		JsonConfig jsonConfig = configJson(dataFormat);
		json = JSONArray.fromObject(list, jsonConfig);
		return json.toString();
	}

	/**
	 * JSON 时间解析器
	 * 
	 * @param datePattern
	 * @return
	 */
	public static JsonConfig configJson(final String datePattern) {

		JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] { datePattern }));

		JsonConfig jsonConfig = new JsonConfig();
		jsonConfig.setIgnoreDefaultExcludes(false);
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
		jsonConfig.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {

			@Override
			public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
				if (value instanceof Date) {
					String str = new SimpleDateFormat(datePattern).format((Date) value);
					return str;
				}
				return value == null ? null : value.toString();
			}

			@Override
			public Object processArrayValue(Object value, JsonConfig jsonConfig) {
				String[] obj = {};
				if (value instanceof Date[]) {
					SimpleDateFormat sf = new SimpleDateFormat(datePattern);
					Date[] dates = (Date[]) value;
					obj = new String[dates.length];
					for (int i = 0; i < dates.length; i++) {
						obj[i] = sf.format(dates[i]);
					}
				}
				return obj;
			}
		});
		return jsonConfig;
	}
}

  

posted @ 2012-10-20 02:34  叶知泉  阅读(3097)  评论(1编辑  收藏  举报