java對象轉(zhuǎn)json字符串度硝,JsonConfig,忽略指定屬性或忽略空值屬性

java對象轉(zhuǎn)json字符串蕊程,JsonConfig,忽略指定屬性或忽略空值屬性

1驼唱、demo部分代碼



對象里面是個對象集合list

2辨赐、最終輸出結(jié)果:


3掀序、實現(xiàn)詳細代碼



如果屬性內(nèi)容為空則忽略

import java.lang.reflect.Field;

import java.util.Collection;

import java.util.Set;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import net.sf.json.util.PropertyFilter;

public class IgnoreFieldProcessorImpl implements PropertyFilter {

Logger log = LoggerFactory.getLogger(this.getClass());

/**

* 忽略的屬性名稱

*/

private String[] fields;

/**

* 是否忽略集合

*/

private boolean ignoreColl = false;

/**

* 空參構(gòu)造方法<br/>

* 默認不忽略集合

*/

public IgnoreFieldProcessorImpl() {

// empty

}

/**

* 構(gòu)造方法

* @param fields 忽略屬性名稱數(shù)組

*/

public IgnoreFieldProcessorImpl(String[] fields) {

this.fields = fields;

}

/**

* 構(gòu)造方法

* @param ignoreColl 是否忽略集合

* @param fields 忽略屬性名稱數(shù)組

*/

public IgnoreFieldProcessorImpl(boolean ignoreColl, String[] fields) {

this.fields = fields;

this.ignoreColl = ignoreColl;

}

/**

* 構(gòu)造方法

* @param ignoreColl 是否忽略集合

*/

public IgnoreFieldProcessorImpl(boolean ignoreColl) {

this.ignoreColl = ignoreColl;

}

public boolean apply(Object source, String name, Object value) {

if(source == null || source.getClass() == null){

log.info("====================="+name+","+value);

return true;

}

Field declaredField = null;

//忽略值為null的屬性

if(value == null)

return true;

//剔除自定義屬性,獲取屬性聲明類型

if(!"data".equals(name) && "data"!=name && !"totalSize".equals(name) && "totalSize"!=name ){

try {

declaredField = source.getClass().getDeclaredField(name);

} catch (NoSuchFieldException e) {

//log.error(name+","+value+","+source.getClass().getName());

log.error("沒有找到屬性" + name,e);

}

? ? }

// 忽略集合

if (declaredField != null) {

if(ignoreColl) {

if(declaredField.getType() == Collection.class

|| declaredField.getType() == Set.class) {

return true;

}

}

}

// 忽略設(shè)定的屬性

if(fields != null && fields.length > 0) {

if(juge(fields,name)) {?

? ? ? ? ? ? return true;?

? ? ? ? } else {?

? ? ? ? ? ? return false;?

? ? ? ? }

}

return false;

}

/**

* 過濾忽略的屬性

* @param s

* @param s2

* @return

*/

public boolean juge(String[] s,String s2){?

? ? ? ? boolean b = false;?

? ? ? ? for(String sl : s){?

? ? ? ? ? ? if(s2.equals(sl)){?

? ? ? ? ? ? ? ? b=true;?

? ? ? ? ? ? }?

? ? ? ? }?

? ? ? ? return b;?

? ? }?

public String[] getFields() {

return fields;

}

/**

* 設(shè)置忽略的屬性

* @param fields

*/

public void setFields(String[] fields) {

this.fields = fields;

}

public boolean isIgnoreColl() {

return ignoreColl;

}

/**

* 設(shè)置是否忽略集合類

* @param ignoreColl

*/

public void setIgnoreColl(boolean ignoreColl) {

this.ignoreColl = ignoreColl;

}

}

IgnoreFieldProcessorImpl ?類在傳遞參數(shù)數(shù)組中自定義需要忽略的屬性名,如new String[]{"pwd"}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末式散,一起剝皮案震驚了整個濱河市暴拄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乖篷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件豁鲤,死亡現(xiàn)場離奇詭異琳骡,居然都是意外死亡讼溺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門炫狱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來视译,“玉大人艳馒,你說我怎么就攤上這事。” “怎么了蝶锋?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵扳缕,是天一觀的道長。 經(jīng)常有香客問我驴剔,道長粥庄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任布讹,我火速辦了婚禮,結(jié)果婚禮上白嘁,老公的妹妹穿的比我還像新娘膘流。我一直安慰自己,他們只是感情好耕魄,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布屎开。 她就那樣靜靜地躺著马靠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逞度。 梳的紋絲不亂的頭發(fā)上妙啃,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天揖赴,我揣著相機與錄音,去河邊找鬼燥滑。 笑死,一個胖子當著我的面吹牛赃蛛,可吹牛的內(nèi)容都是我干的搀菩。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼歧蒋,長吁一口氣:“原來是場噩夢啊……” “哼疏尿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起锌俱,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贸宏,失蹤者是張志新(化名)和其女友劉穎磕洪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體析显,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年分尸,在試婚紗的時候發(fā)現(xiàn)自己被綠了箩绍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡材蛛,死狀恐怖卑吭,靈堂內(nèi)的尸體忽然破棺而出马绝,到底是詐尸還是另有隱情,我是刑警寧澤迹淌,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布唉窃,位于F島的核電站纹笼,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蔓涧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一篷扩、第九天 我趴在偏房一處隱蔽的房頂上張望茉盏。 院中可真熱鬧,春花似錦鸠姨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坯汤,卻和暖如春搀愧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背咱筛。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留溉愁,地道東北人饲趋。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓奕塑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親龄砰。 傳聞我的和親對象是個殘疾皇子讨衣,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容