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);
		}
	}
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 ) { init ( ( CharSequence ) source ) ; } else if ( source instanceof JSONTokener ) { init ( ( JSONTokener ) source ) ; } else if ( source instanceof Number ) { } else { this . populateMap ( source ) ; } }
初始化
<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