递归提取对象中的value

以下JSON结构为例
{
	key1:{
	  key11:{
		  key111:111   //提取111 value(map,key1,key11, key111)
	  },
	  key12:{
		  key121:{
			  key1211:1211,
			  key1212:1212 //提取1212 value(map,key1, key12, key121, key1212)
		  }
	  }
	}
}
BeanUtil提供以下函数
/ * 
* @param src 数据源
* @param voluntary 遇到基础类型是否停止(不取下一级)
*                  voluntary=false时遇到提取基础类型属性值时返回null
*                  voluntary=true时遇到提取基础类型属性值时返回当前value并return value
* @param keys keys 一级key.二级key.三级key
* @return Object
*/
public static Object extract(Object src, boolean voluntary, String ... keys);

BeanUtil.extract(json,"key1","key11","key111");//提取111 
//如果中途遇到基础类型,如key111的值是1111,但1111并没有key0属性
BeanUtil.extract(json,false,"key1","key11","key111","key0"); //返回null  
BeanUtil.extract(json,true,"key1","key11","key111","key0"); //遇到基础类型停止 直接返回1111  

其他文档