code: private void init(Object source) {
  		if (null == source) {
  			return;
  		}
  
  		if (source instanceof Map) {
  			boolean ignoreNullValue = this.config.isIgnoreNullValue();
  			for (final Entry<?, ?> e : ((Map<?, ?>) source).entrySet()) {
  				final Object value = e.getValue();
  				if (false == ignoreNullValue || null != value) {
  					this.rawHashMap.put(Convert.toStr(e.getKey()), JSONUtil.wrap(value, ignoreNullValue));
  				}
  			}
  		} else if (source instanceof CharSequence) {
  			// 可能为JSON字符串
  			init((CharSequence) source);
  		} else if (source instanceof JSONTokener) {
  			init((JSONTokener) source);
  		} else if (source instanceof Number) {
  			// ignore Number
  		} else {
  			// 普通Bean
  			this.populateMap(source);
  		}
  	}
docs: 初始化
  <ol>
  <li>value为Map，将键值对加入JSON对象</li>
  <li>value为JSON字符串（CharSequence），使用JSONTokener解析</li>
  <li>value为JSONTokener，直接解析</li>
  <li>value为普通JavaBean，如果为普通的JavaBean，调用其getters方法（getXXX或者isXXX）获得值，加入到JSON对象。例如：如果JavaBean对象中有个方法getName()，值为"张三"，获得的键值对为：name: "张三"</li>
  </ol>
  
  @param source JavaBean或者Map对象或者String