zoukankan      html  css  js  c++  java
  • [json]java使用jsonlib库的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;
    	}
    }
    

      

    天行健君子以自强不息。
  • 相关阅读:
    oracle一些常用的单记录函数
    javascript闭包(closure)
    【Matlab开发】matlab中bar绘图设置与各种距离度量
    【Matlab开发】matlab中bar绘图设置与各种距离度量
    【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
    【Matlab开发】matlab中norm范数以及向量点积、绘图设置相关
    【编程开发】opencv实现对Mat中某一列或某一行的元素进行normalization
    【编程开发】opencv实现对Mat中某一列或某一行的元素进行normalization
    【编程开发】C语言中随机数rand使用注意事项
    【编程开发】C语言中随机数rand使用注意事项
  • 原文地址:https://www.cnblogs.com/mrye/p/2731852.html
Copyright © 2011-2022 走看看