java后台验证map类型的参数是否为NULL


public class MapCheck{
	/**
	 * 得到返回结果对
	 */
	private static final String resultData = "data";
	private static final String resultState = "state";
	private static final String resultMessage = "msg";
	/**
	 * 参数错误
	 */
	private static final int RS_PARAM_ERROR = 1;


	/**
	 * 检查参数params 中的指定键是否是一个null。
	 * 例如:
	 * 参数notNullKeys 为["a","b"], 则检查params.get(a) 与params.get("b")的结果是否有
	 * 参数notNullKeys 为["a.2","b.x"],则检查params.get("a").get(2)与
	 * params.get("b").get(2)的结果是否有null
	 *
	 *
	 */
	 public Map<String, Object> checkNotNullKeys(Map<?, ?> params, String... notNullKeys){
		Map<String, Object> result = checkNotNull(params);
		if(result != null){
			return result;
		}
		if(notNullKeys.length == 0){
			return null;
		}
		for(String fullKey : notNullKeys){
			String[] keys = fullKey,split("\\.");
			Object obj = params;
			for(int i =0; i< keys.length; i++){
				String key = keys[i];
				if(key.isEmpty()){
					continue;
				}
				if(obj instanceof Map){
					Map<String, Object> objMap = (Map<String, Object>) obj;
					obj = objMap.get(key);
				} else if(obj instanceof List){
					List<Object> objList = (List<Object>) obj;
					try{
						obj = objList.get(Integer.parseInt(key));
					} catch(Exception e){
						return _checkNotNullKeysInfo(notNullKeys);
					}
					if(obj == null){
						reutrn _checkNotNullKeysInfo(notNullKeys);
					}
				
				}
			}	
		}
		reutrn null;
	 }
	 
	/**
	 * 
	 * 得到返回结果树,形如{"data" : 参数Data, "state" :0, "msg" :null}
	 *
	 */
	 public Map<String, Object> resultObj(int state, String msg, Object data){
		Map<String, Object> result = new HashMap<>();
		reuslt.put(resultState, state);
		reuslt.put(resultMessage, msg);
		reuslt.put(resultData, data);
		return result;
	 }
	 
	 
	 protected Map<String, Object>checkNotNull(Map<?, ?> params){
		if(params == null){
			return resultObj(RS_PARAM_ERROR,"参数必须是一个非Null的Json字符串",null);
		}
		return null; 
	 }
	 
	 private Map<String,Object> _checkNotNullKeysInfo(String[] notNullKeys){
		StringBuilder msgBuiler = new StringBuilder();
		msgBuiler.append("参数Map 中的key :[");
		for(String msgkey : notNullKeys){
			msgBuiler.append(msgkey);
			msgBuiler.append(",");
		}
		if(msgBuiler.charAt(msgBuiler.length() - 1) == ','){
			msgBuiler.deleteCharAt(msgBuiler.length() - 1);
		}
		msgBuiler.append("]必须都是非空的");
		return resultObj(RS_PARAM_ERROR,msgBuiler.toString(),null);
	 }
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值