java对象转json字符串,JsonConfig,忽略指定属性或忽略空值属性

java对象转json字符串,JsonConfig,忽略指定属性或忽略空值属性

1、demo部分代码



对象里面是个对象集合list

2、最终输出结果:


3、实现详细代码



如果属性内容为空则忽略

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;

/**

* 空参构造方法

* 默认不忽略集合

*/

public IgnoreFieldProcessorImpl() {

// empty

}

/**

* 构造方法

* @param fields 忽略属性名称数组

*/

public IgnoreFieldProcessorImpl(String[] fields) {

this.fields = fields;

}

/**

* 构造方法

* @param ignoreColl 是否忽略集合

* @param fields 忽略属性名称数组

*/

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

this.fields = fields;

this.ignoreColl = ignoreColl;

}

/**

* 构造方法

* @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;

}

}

}

// 忽略设定的属性

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;

}

/**

* 设置忽略的属性

* @param fields

*/

public void setFields(String[] fields) {

this.fields = fields;

}

public boolean isIgnoreColl() {

return ignoreColl;

}

/**

* 设置是否忽略集合类

* @param ignoreColl

*/

public void setIgnoreColl(boolean ignoreColl) {

this.ignoreColl = ignoreColl;

}

}

IgnoreFieldProcessorImpl  类在传递参数数组中自定义需要忽略的属性名,如new String[]{"pwd"}

你可能感兴趣的:(java对象转json字符串,JsonConfig,忽略指定属性或忽略空值属性)