運用json-lib生成特定json

              在實現接口過程當中,通常協議都是定義數據格式爲json。咱們有時候須要把bean轉換爲JSON輸出給接口調用者,可是可能存在bean中的字段有些不是接口定義所須要的。這個時候須要咱們對JSON轉換是須要過濾掉不須要的字段。json-lib提供JsonConfig類給開發者,開發者只須要經過JsonConfig的setExcludes()和setJsonPropertyFilter()方法進行過濾沒必要要的字段。
java

          指定過濾某些字段屬性

             setExcludes()方法接受一個須要過濾的字段字符串數組,在該數組中的字段將被過濾掉。
json

 

	/**
	 * 生成指定要過濾的字段的json配置
	 * @param arrFields
	 * @return
	 */
	public static JsonConfig getExculudeJsonConfig(String[] arrFields){
		JsonConfig jsonConfig = new JsonConfig(); 
		/*過濾默認的key*/
		jsonConfig.setIgnoreDefaultExcludes(false);       
	        /*過濾自包含*/
		jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);     
		
		if(arrFields != null && arrFields.length > 0){
			jsonConfig.setExcludes(arrFields);
		}
		
		return jsonConfig;
	}

 

          指定生成某些字段屬性

              setJsonPropertyFilter()方法支持傳遞一個實現PropertyFilter接口對象參數。PropertyFilter接口中必須實現apply()方法。如下實現指定哪些字段必須轉換成JSON格式,除此以外都不轉換。
數組

 

	/**
	 * 生成指定的字段的json配置
	 * @param properties
	 * @return
	 */
	public static JsonConfig getJsonPropertyFilter(final String[] properties){
		JsonConfig jsonConfig = new JsonConfig(); 
		jsonConfig.setJsonPropertyFilter(new PropertyFilter(){

			@Override
			public boolean apply(Object source, String name, Object value) {
				if (ArrayUtils.contains(properties, name)) {
					return false;
				} else {
					return true;
				} 
			}		
		});
			
		return jsonConfig;
	}
相關文章
相關標籤/搜索