简单的封装srping的json数据过滤器

来源:互联网 发布:python 字典 key 变量 编辑:程序博客网 时间:2024/06/06 09:37

package com.my.srpingframework.web.SimpleBeanPripertyFilter;

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.ser.impl.SimpleBeanPropertyFilter;
import org.codehaus.jackson.map.ser.impl.SimpleFilterProvider;
import com.witt.monitoring.model.User;

public class SimpleBeanPriperty {
//json过滤器
static SimpleFilterProvider filterProvider = new SimpleFilterProvider();
//json对象
static ObjectMapper om = new ObjectMapper();
//Map集合
static Map<String,Object> map=new HashMap<String,Object>();
static String key;
/**
* 过滤所有的对象中的属性
* @param JsonFilterProperty 要过滤的json对象
* @param Model 要获取的对象
* @throws Exception
*/
public static void filterProviderAll(String JsonFilterProperty,Class Model)throws Exception{
Field[] fields = Model.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
filterProvider.addFilter(JsonFilterProperty,
SimpleBeanPropertyFilter.filterOutAllExcept(fields[i].getName()+","));
om.setFilters(filterProvider);
}
}
/**
* 过滤对象中的对象属性
* @param JsonFilterProperty 要过滤的json对象
* @param Mode 要获取的对象
* @param ObjName 对象中对象属性的名称
* @throws Exception 异常抛出
*/
public static void filterProveriderObject(String JsonFilterProperty,Class Model,String ObjName)throws Exception{
Field[] fields = Model.getDeclaredFields();
//现将对象的所有属性装入Map集合
for (int i = 0; i < fields.length; i++) {
map.put(fields[i].getName(), fields[i].getName());
}
//先通过键去掉不需要过滤的属性
map.remove(ObjName);
//转成set集合
Set ms=map.keySet();
//通过迭代器遍历Map集合
Iterator it=ms.iterator();
while(it.hasNext()){
//转成字符串
String key=(String) it.next();
//spring的json数据过滤字段
filterProvider.addFilter(JsonFilterProperty,SimpleBeanPropertyFilter.filterOutAllExcept(key+","));
om.setFilters(filterProvider);
}
}
public static void main(String[] args) throws Exception{
SimpleBeanPriperty.filterProveriderObject("", User.class, "mode");
}
}
2014-3-22 18:34 打包
0 0