JSON-lib学习(二)json-lib做json转换的原理

在java对象和json之间做转换的时候,json-lib组件,使用的是对象的getter/setter方法,即调用这些方法,不管这些getter/setter方法有没有对应的属性。因此,在做java对象与json之间的转换时候,除了属性的getter/setter方法,其他方法最好不要以get/set开头。

package cycle;

public class ComplexData
{
    private String first;

    public ComplexData()
    {

    }

    public String getOne()
    {
        first = "123";
        return first;
    }

    public void setOne(String str)
    {
        this.first = str;
    }

    public void setTestYes(String str)
    {
        System.out.println("json to java时候,会被调用");
    }

    public void setTestNot()
    {
        System.out.println("不符合set方法约束,没有参数,不会被调用");
    }

    public void getNotCall()
    {
        System.out.println("不会被调用,该方法虽然以get开头,但是没有返回值,不符合javabean约定");
    }

    public String getCanCall()
    {
        System.out.println("虽然不是获取属性方法,但是符合javabean约定,会被调用");
        return null;
    }

}
//测试代码
ComplexData comp = new ComplexData();
System.out.println(JSONObject.fromObject(comp));

String str = "{one:0,testYes:1,testNot:2}";
ComplexData after = (ComplexData) JSONObject.toBean(JSONObject.fromObject(str),     ComplexData.class);
System.out.println(after.getOne());
  
 

程序执行结果:

虽然不是获取属性方法,但是符合javabean约定,会被调用
2013-7-4 21:36:46 net.sf.json.JSONObject defaultBeanProcessing
信息: Property 'testYes' of class cycle.ComplexData has no read method. SKIPPED
{"canCall":"","one":"123"}
json to java时候,会被调用
123
2013-7-4 21:36:46 net.sf.json.JSONObject toBean
警告: Tried to assign property testNot:java.lang.Integer to bean of class cycle.ComplexData

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值