java对象转map工具类beanutils_Apache Commons 工具类介绍及简单使用

点击上方“码农沉思录,选择“设为星标”

优质文章,及时送达

Apache Commons 工具类大家都有用过,但是可能缺乏系统学习,只用到了一小部分功能,无法发挥极限的价值,肥朝用大白话说就是,一颗好白菜都让猪给拱了!

代码过多,手机观看效果不佳,建议收藏后在电脑上静悄悄地看。因内容健康,可大胆转发,即使未满十八岁,在没有家长陪同下也一样可以观看!

1、BeanUtils

提供了对于JavaBean进行各种操作, 比如对象,属性复制等等。

//1、 克隆对象  
//  新创建一个普通Java Bean,用来作为被克隆的对象  

    public class Person {  
    private String name = "";  
    private String email = "";  

    private int age;  
    //省略 set,get方法  
    }  

// 再创建一个Test类,其中在main方法中代码如下:
    import java.lang.reflect.InvocationTargetException;  
    import java.util.HashMap;  
    import java.util.Map;  
    import org.apache.commons.beanutils.BeanUtils;  
    import org.apache.commons.beanutils.ConvertUtils;  
    public class Test {  

    /** 
    * @param args 
    */  
    public static void main(String[] args) {  
    Person person = new Person();  
    person.setName("tom");  
    person.setAge(21);  
    try {  
            //克隆  
        Person person2 =  (Person)BeanUtils.cloneBean(person);  
        System.out.println(person2.getName()+">>"+person2.getAge());  
    } catch (IllegalAccessException e) {  
        e.printStackTrace();  
    } catch (InstantiationException e) {  
        e.printStackTrace();  
    } catch (InvocationTargetException e) {  
        e.printStackTrace();  
    } catch (NoSuchMethodException e) {  
        e.printStackTrace();  

    }  

    }  

    }  

// 原理也是通过Java的反射机制来做的。
//  2、 将一个Map对象转化为一个Bean  
// 这个Map对象的key必须与Bean的属性相对应。
    Map map = new HashMap();  
    map.put("name","tom");  
    map.put("email","tom@");  
    map.put("age","21");  
    //将map转化为一个Person对象  
    Person person = new Person();  
    BeanUtils.populate(person,map);  
// 通过上面的一行代码,此时person的属性就已经具有了上面所赋的值了。
// 将一个Bean转化为一个Map对象了,如下:
    Map map = BeanUtils.describe(person)

2.Betwixt

XML与Java对象之间相互转换。

//1、 将JavaBean转为XML内容  
// 新创建一个Person类  
public class Person{  
    private String name;  
    private int age;  
    /** Need to allow bean to be created via reflection */  
    public PersonBean() {  
    }  
    public PersonBean(String name, int age) {  
        this.name = name;  
        this.age = age;  
    }  
    //省略set, get方法  
    public String toString() {  
        return "PersonBean[name='" + name + "',age='" + age + "']";  
    }  
}  

//再创建一个WriteApp类:
import java.io.StringWriter;  
import org.apache.commons.betwixt.io.BeanWriter;  
public class WriteApp {  
/** 
* 创建一个例子Bean,并将它转化为XML. 
*/  
public static final void main(String [] args) throws Exception {  
    // 先创建一个StringWriter,我们将把它写入为一个字符串         
    StringWriter outputWriter = new StringWriter();  
    // Betwixt在这里仅仅是将Bean写入为一个片断  
    // 所以如果要想完整的XML内容,我们应该写入头格式  
    outputWriter.write(“<?xml  version=’1.0′ encoding=’UTF-8′ ?>\n”);  
    // 创建一个BeanWriter,其将写入到我们预备的stream中  
    BeanWriter beanWriter = new BeanWriter(outputWriter);  
    // 配置betwixt  
    // 更多详情请参考java docs 或最新的文档  
    beanWriter.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);  
    beanWriter.getBindingConfiguration().setMapIDs(false);  
    beanWriter.enablePrettyPrint();  
    // 如果这个地方不传入XML的根节点名,Betwixt将自己猜测是什么  
    // 但是让我们将例子Bean名作为根节点吧  
    beanWriter.write(“person”, new PersonBean(“John Smith”, 21));  
    //输出结果  
    System.out.println(outputWriter.toString());  
    // Betwixt写的是片断而不是一个文档,所以不要自动的关闭掉writers或者streams,  
    //但这里仅仅是一个例子,不会做更多事情,所以可以关掉  
    outputWriter.close();  
    }  
}  
//2、 将XML转化为JavaBean  
import java.io.StringReader;  
import org.apache.commons.betwixt.io.BeanReader;  
public class ReadApp {  
public static final void main(String args[]) throws Exception{  
    // 先创建一个XML,由于这里仅是作为例子,所以我们硬编码了一段XML内容  
    StringReader xmlReader = new StringReader(  
    "<?xml  version=’1.0′ encoding=’UTF-8′ ?> 25James Smith");  
    //创建BeanReader  
    BeanReader beanReader  = new BeanReader();  
    //配置reader  
    beanReader.getXMLIntrospector().getConfiguration().setAttributesForPrimitives(false);  
    beanReader.getBindingConfiguration().setMapIDs(false);  
    //注册beans,以便betwixt知道XML将要被转化为一个什么Bean  
    beanReader.registerBeanClass("person", PersonBean.class);  
    //现在我们对XML进行解析  
    PersonBean person = (PersonBean) beanReader.parse(xmlReader);  
    //输出结果  
    System.out.println(person);  
    }  
}

3.Codec

提供了一些公共的编解码实现,比如Base64, Hex, MD5,Phonetic and URLs等等。

//Base64编解码  
private static String encodeTest(String str){  
    Base64 base64 = new Base64();  
    try {  
        str = base64.encodeToString(str.getBytes("UTF-8"));  
    } catch (UnsupportedEncodingException e) {  
        e.printStackTrace();  
    }  
        System.out.println("Base64 编码后:"+str);  
    return str;  
}  

private static void decodeTest(String str){  
    Base64 base64 = new Base64();  
    //str = Arrays.toString(Base64.decodeBase64(str));  
    str = new String(Base64.decodeBase64(str));  
    System.out.pri
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值