code: public static Map<String, Object> beanToMap(Object bean, Map<String, Object> targetMap, boolean ignoreNullValue, Editor<String> keyEditor) {
  		if (bean == null) {
  			return null;
  		}
  
  		final Collection<PropDesc> props = BeanUtil.getBeanDesc(bean.getClass()).getProps();
  
  		String key;
  		Method getter;
  		Object value;
  		for (PropDesc prop : props) {
  			key = prop.getFieldName();
  			// 过滤class属性
  			// 得到property对应的getter方法
  			getter = prop.getGetter();
  			if (null != getter) {
  				// 只读取有getter方法的属性
  				try {
  					value = getter.invoke(bean);
  				} catch (Exception ignore) {
  					continue;
  				}
  				if (false == ignoreNullValue || (null != value && false == value.equals(bean))) {
  					key = keyEditor.edit(key);
  					if (null != key) {
  						targetMap.put(key, value);
  					}
  				}
  			}
  		}
  		return targetMap;
  	}
docs: 对象转Map<br>
  通过实现{@link Editor} 可以自定义字段值，如果这个Editor返回null则忽略这个字段，以便实现：
  
  <pre>
  1. 字段筛选，可以去除不需要的字段
  2. 字段变换，例如实现驼峰转下划线
  3. 自定义字段前缀或后缀等等
  </pre>
  
  @param bean bean对象
  @param targetMap 目标的Map
  @param ignoreNullValue 是否忽略值为空的字段
  @param keyEditor 属性字段（Map的key）编辑器，用于筛选、编辑key
  @return Map
  @since 4.0.5