国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

json-lib 過濾二級屬性

2019-11-08 18:42:22
字體:
來源:轉載
供稿:網友

相用json-lib 過濾屬性,網上搜了一下,都是過濾第一級別的,需要重寫 config,filed 什么的。覺得很麻煩,然后搜了下別的實現方案,阿里巴巴的 fastjson 很不錯

實現如下:

 

SimplePRopertyPreFilter filter = new SimplePropertyPreFilter(TTown.class, "id","townname");      response.getWriter().write(JSONObject.toJSONString(townList,filter)); 只要指定二級屬性的類名就可以了,很方便。但是如果就想用json-lib 怎么弄呢?

我不想改config ,filter什么的,于是自己寫

public class Test {		public static void main(String[] args) throws Exception {						Entity e1 = new Entity();		e1.setAge(1);		e1.setId(1);		e1.setName("e1");		e1.setSex("male");				Entity e2 = new Entity();		e2.setAge(2);		e2.setId(2);		e2.setName("e2");		e2.setSex("female");				List<Entity> list = new ArrayList<Entity>();		list.add(e1);		list.add(e2);				Map map = new HashMap();		map.put("id", 1);		map.put("name", "bruce");		map.put("list", list);				JSONObject json = JSONObject.fromObject( map );  		System.out.println(json.toString());		//-----------------------------------		String[] names = {"sex"};		map = convert(map,names);		System.out.println("---------------------");		json = JSONObject.fromObject( map );  		System.out.println(json.toString());	}		 static Map convert(Map para,String[] names) throws Exception{				List<Map> result = new ArrayList<Map>();		List list = (List) para.get("list");				for(Object ob :list){			Map map = new HashMap();			Field[] fs = ob.getClass().getDeclaredFields();			for(Field f : fs){				if(!contains(names, f.getName())){					f.setaccessible(true); //設置些屬性是可以訪問的  			        Object val = f.get(ob);					map.put(f.getName(), val);				}			}			result.add(map);		}				para.put("list", result);		return para;	}		static boolean contains(String[] strs ,String str){		if(null == strs || strs.length == 0){			return false;		}				for(int i=0;i<strs.length;i++){			if(strs[i].equals(str)){				return true;			}		}		return false;	}	}大體思路是 將list 中的實體遍歷,利用反射過濾屬性,生成一個新的map .塞回list中。然后再把新的list賦值給原始的map。生成json 。運行結果如下:

{"name":"bruce","id":1,"list":[{"sex":"male","name":"e1","id":1,"age":1},{"sex":"female","name":"e2","id":2,"age":2}]}---------------------{"name":"bruce","id":1,"list":[{"name":"e1","id":1,"age":1},{"name":"e2","id":2,"age":2}]}

將二級屬性list 中的 sex 屬性過濾掉了


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏东市| 阳新县| 宿松县| 庆云县| 辰溪县| 江门市| 合阳县| 盐亭县| 樟树市| 田阳县| 廊坊市| 友谊县| 湖南省| 会泽县| 镇远县| 南丰县| 嘉荫县| 舟曲县| 天等县| 南和县| 福泉市| 和顺县| 垫江县| 高碑店市| 左贡县| 绥化市| 乌兰浩特市| 和平区| 凤冈县| 仙桃市| 甘南县| 正宁县| 肇州县| 内丘县| 阿城市| 武山县| 扶余县| 青河县| 南靖县| 麻城市| 梓潼县|