`

JSON工具类

阅读更多
package com.code.util;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

public class JSONHanlder {

	/**
	 * 获取JSON数据
	 * @param key
	 * @param source
	 * @return
	 */
	public static String getVal(String key,String json){
		if(key!=null&&key.trim().isEmpty()==false&&key.indexOf(".")!=-1&&json!=null&&json.trim().isEmpty()==false){
			String[] ks = key.split("[.]");
			List<String> list = Arrays.asList(ks);
			return getVal(json,list.iterator());
		}else if(key!=null&&key.trim().isEmpty()==false){
			return JSONObject.fromObject(json).get(key).toString();
		}
		return null;
	}
	
	/**
	 * 将对象转换成 JSON
	 * @param obj
	 * @return
	 */
	public static String getObjectAsString(Object obj){
		return getObjectAsString(null,null,obj);
	}
	/**
	 * 将对象转换成 JSON
	 * @param obj
	 * @return
	 */
	public static String getObjectAsString(Object ... obj){
		return getObjectAsString(null,null,obj);
	}
	
	/**
	 * 将对象转换成 JSON
	 * @param parrent 时间格式
	 * @param excludes 不包含的字段
	 * @param obj
	 * @return
	 */
	public static String getObjectAsString(String parrent,String excludes,Object... obj){
		if(obj==null||obj.length==0){
			return "{}";
		}
		if(obj.length==1){
			return JSONObject.fromObject(obj[0],Config.getInstance(parrent,excludes)).toString();
		}
		Data data = new Data();
		data.getRecords().addAll(Arrays.asList(obj));
		return JSONObject.fromObject(data,Config.getInstance(parrent,excludes)).toString();
	}
	
	/**
	 * 将对象转换成 JSON
	 * @param excludes
	 * @param obj
	 * @return
	 */
	public static String getObjectAsString(String excludes,Object... obj){
		return getObjectAsString(null,excludes,obj);
	}
	
	/**
	 * 将对象转换成 JSON
	 * @param parrent
	 * @param obj
	 * @return
	 */
	public static String getObjectAsString(Object parrent,Object... obj){
		if(parrent!=null){
			return getObjectAsString(parrent.toString(),null,obj);
		}
		return getObjectAsString(null,null,obj);
	}
	
	/**
	 * 获取JSON数据
	 * @param source
	 * @param ks
	 * @return
	 */
	private static String getVal(Object source,Iterator<String> ks){
		if(ks.hasNext()){
			source = JSONObject.fromObject(source).get(ks.next());
			if(source==null){
				return null;
			}
			return getVal(source,ks);
		}
		return  source.toString();
	}
	
	/**
	 * JSON 配置
	 * @author LGF
	 *
	 */
	public static class Config extends JsonConfig implements JsonValueProcessor {
		
		/**
		 * 日期格式化
		 */
		private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		/**
		 * 默认实例
		 */
		private static Config config = new Config();
		
		
		/**
		 * 默认构造方法
		 */
		private Config() {
			this.registerJsonValueProcessor(Date.class, this);
		}
		
		/**
		 * 构造方法
		 * @param parrent 日期格式化
		 * @param excludes 不包含的字段
		 */
		private Config(String parrent,String excludes) {
			if(parrent!=null){
				sdf = new SimpleDateFormat(parrent);
			}
			if(excludes!=null){
				this.setExcludes(excludes.split(","));
			}
			this.registerJsonValueProcessor(Date.class, this);
		}
		
		@Override
		public Object processArrayValue(Object date, JsonConfig cfg) {
			if(date instanceof Date){
				return sdf.format(date);
			}
			return null;
		}

		@Override
		public Object processObjectValue(String name, Object date,
				JsonConfig cfg) {
			if(date instanceof Date){
				return sdf.format(date);
			}
			return null;
		}
		
		/**
		 * 获取默认实例
		 * @return
		 */
		public static Config getDefaultInstance(){
			return config;
		}
		
		/**
		 * 日期格式化实例
		 * @param parrent
		 * @return
		 */
		public static Config getInstance(String parrent,String excludes){
			return new Config(parrent,excludes);
		}
		
	}
	
	/**
	 * JSON 数据储存实体
	 * @author LGF
	 *
	 */
	public static class Data{
		private List<Object> records = new ArrayList<Object>();

		public List<Object> getRecords() {
			return records;
		}
		public void setRecords(List<Object> records) {
			this.records = records;
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics